我在Nodejs的體系里也算泡了很久了,的確非常喜歡javascript和Nodejs. 在我看來,用nodejs做web開發有以下幾個優點:
- Javascript作為一個語法異常簡單的腳本語言,約束較少,開發效率比較高.
- Nodejs在設計時就考慮了依賴管理,有一個成熟的npm機制,在使用過程中很少遇到版本問題.
- Javascript的語法非常靈活,而且它的基於prototype的鏈式集成機制,obj[property]和obj.property的混用可以創造出很多變化.
- 對於JSON的天然支持
- 原生的異步編程機制和單線程的工作方式,因此不像同步模型需要鎖等機制
- javascript可以讓前后端開發語言統一,現在不少框架把網絡通訊層進行了封裝.前后端的區別更加模糊.
特別是現在前端的邏輯越來越復雜,單頁面的web app程序越來越流行. 相信Nodejs會被更多的互聯網公司接受.
這篇文章簡單記錄下我經常用到的一些庫或者框架,僅供參考.
標准LIB
path
path庫最常用的就是path.join了,另外path.extname也經常能用到. path和require機制配合可以做模塊的動態加載等一些功能.
fs
fs是nodejs的文件管理模塊,常用的幾套api有:
- readFile[Sync], writeFile[Sync]等用來讀取文件內容的.
- lstat, stat和isDirectory, isFile等API結合來判斷文件/文件夾結構,目錄等
- createReadStream, createWriteStream獲取讀寫流.
request
request庫用來發送Http請求,Nodejs的網絡lib庫建議還是仔細閱讀一下nodejs的官方文檔.
常用LIB
Q
因為Javascript的異步機制,使得寫出來的程序往往是一層一層的callback嵌套,代碼的可讀性和維護性都很差. 而Promise的出現使得我們可以更加直觀簡潔的去處理異步編程.
數據庫
mongoose
mongo數據庫在WEB編程里大行其道. 我喜歡用mongo的最重要原因就是sql數據庫太麻煩,需要嚴格的設計數據庫,然后所有操作都需要去拼接SQL. 而mongo的數據就是類json對象,非常適合快速開發.
mongoose是nodejs的一個mongo驅動,通過定義Schema和Model,mongoose可以幫開發者管理數據庫連接,數據寫入讀取等. 另外結合Schema和Model可以進一步直接封裝出Restful Service.
nedb
對於程序員,沒有最懶,只有更懶.畢竟Mongo數據庫還需要單獨建立,然后去連接,在快速開發時,我偶爾會使用nedb. 這是一個nosql版的sqlite, 數據庫直接以文件形式存儲,非常適合快速的原型開發.
WEB Server
express
express貌似成了nodejs web項目的基准了吧,貌似也有一些類似的框架,但是express是毫無疑問的主流.
express里目前我最常用到的就是基本的router,jade渲染機制,另外還有一些輔助庫.
passport
web最基本的功能就是用戶登錄, passport就是常用的用戶登錄庫,另外它還提供了與各個網頁的oauth對接功能.
formidable
express4已經集成了bodyparser等一些基本中間件. 不過formidable還是值得一用,專門對文件上傳進行了優化.
node-restify-mongoose
隨着業務邏輯很多轉移到前端,后端系統往往只作為一個data server.
node-restify-mongoose使開發者僅僅通過定義數據schema就可以搭建出restful service.
winston
winston是用來做log的, 通過定義transport以及log level,可以很方便的切換不同的log等級,以及log輸出方式(文件,屏幕等).