NodeJS常用模塊收集

收集了NodeJS開發中常用的一些模塊。html

MVC框架 - Express

Express 是輕量靈活的Nodejs Web應用框架。它可以高速地搭建站點。前端

Express框架創建在Nodejs內置的Http模塊上,並對Http模塊再包裝。從而實際Web請求處理的功能。它支持多種前端模板,如Jade, EJS等。它是T.J大神的做品,只是已經交由其餘團隊維護了。node

Koa是T.J大神的另一個做品,號稱下一代NodeJS web框架。使用 koa 編寫 web 應用。經過組合不一樣的 generator,可以免除反覆繁瑣的回調函數嵌套。並極大地提高常用錯誤處理效率。mysql

Koa 不在內核方法中綁定不論什麼中間件。它只提供了一個輕量優雅的函數庫,使得編寫 Web 應用變得駕輕就熟。需要注意的是:koa 依賴支持 generator 的 Node 環境,準確來講,是 node >= 0.11.9 的環境。linux

安裝完畢後,應確保使用 $ node app.js --harmony 或(--harmony-generators) 即,harmony 模式執行程序。我的認爲假設是正式產品中仍是用Express比較靠譜。git

Rest開發 - Restify

restify 是一個基於Nodejs的REST應用框架。支持server端和client。restify比起express更專一於REST服務,去掉了express中的template, render等功能,同一時候強化了REST協議使用,版本號化支持,HTTP的異常處理。github

hapi是一個用來構建基於 Node.js 的應用和服務的富框架。使得開發人員把重點放在便攜可重用的應用邏輯而不是構建架構。內建輸入驗證、緩存、認證和其它 Web 應用開發常用的功能,用來開發rest代碼也是一個不錯的選擇。web

前端模板 - EJS

EJS是一個功能強大又比較easy使用的前端模板,Express對EJS支持比較好。它的語法比較接近前端開發者的使用方式。另外名氣比較大的前端模板是Jade,它和Express是同一個做者開發的,Express默認用的就是Jade模板,但是它的語法更接近後端語言的語法,前端開發者很是多時候難以適應,但是它的功能確實很是強大。redis

數據庫驅動 - Mongoose

MongoDB和NodeJS應該是最佳搭檔了,而Mongoose是MongoDB的對象模型工具。經過Mongoose框架,可以進行很方便的訪問MongoDB的操做。固然假設你對性能要求很高的話。也可以考慮使用mongodb,它功能相對較少,比較底層一些,事實上Mongoose就是基於它構建的。sql

其餘:redismysql

Web Socket - Socket.IO

NodeJS的一個主要長處是高併發,所以NodeJS是Web Socketserver的理想選擇,而Socket.IO則Socket模塊的不二選擇,可以用於構建聊天室、客服系統等。

Socket.IO不只提供了server端代碼,還提供了前端JS代碼。可以很方便的進行Web Socket開發,同一時候它兼容那些不支持Web Socket的瀏覽器。

日誌管理 - Log4js

相似於JAVA中的log4j,具備coloured console logging、可以設置輸出等級等功能。簡單易用。假設沒有複雜需求足夠使用了。

winston是一個功能更強大也更復雜的日誌模塊,人氣比較高,對功能有追求的可以看看這個模塊。

HTTP調用 Request

可以理解爲一個簡化的CURL模塊,創建各類HTTP請求,支持受權驗證。事實上功能仍是許多的,基本知足絕大部分需求。眼下在NPM模塊排行前幾名。

異步流程控制 - Async

NodeJS中大量的異步callback嵌套預計讓許多人頭疼,尤爲是多個異步函數要求必定的調用順序時更是讓代碼失控,Async可以很好的解決這些問題,它可以使異步流程同步化。Q是第二種很不錯的選擇,它是實現了promises接口。

部署 - forever

forever能夠看作是一個nodejs的守護進程。能夠啓動。中止。從新啓動咱們的app應用,執行穩定。支持高併發。啓動/中止命令簡單,支持熱部署。宕機從新啓動,監控界面和日誌。集羣環境。

pm2是一個帶有負載均衡功能的Node應用的進程管理器。當你要把你的獨立代碼利用全部的server上的全部CPU,並保證進程永遠都活着。0秒的重載。

假設你想要從操做系統的層次來解決NodeJSserver管理問題。可以參考:Linux系統服務upstart

固然開發時可使用supervisor啓動服務。它能夠監控文件。當有文件更新時本身主動從新啓動服務。事實上Forever也有這個功能。

項目管理

grunt是一個本身主動化的構建工具。對於需要重複重複的任務。好比壓縮(minification)、編譯、單元測試、linting等,本身主動化工具可以減輕你的勞動。簡化你的工做。

當你正確配置好了任務。任務執行器就會本身主動幫你或你的小組完畢大部分無聊的工做。並且它有大量的插件可以使用。

我主要用它做前端的本身主動化處理工做。

bower是twitter的又一個開源項目。使用nodejs開發,用於web包管理。做爲一個js依賴管理的工具,提供一種理想包管理方式,藉助了npm的一些思想,爲咱們提供一個舒服的開發環境。

yeoman是Google的團隊和外部貢獻者團隊合做開發的,他的目標是經過Grunt(一個用於開發任務本身主動化的命令行工具)和Bower(一個HTML、CSS、Javascript和圖片等前端資源的包管理器)的包裝爲開發人員建立一個易用的工做流。Yeoman的目的不只是要爲新項目創建工做流,同一時候仍是爲了解決前端開發所面臨的諸多嚴重問題,好比零散的依賴關係。

定時任務 - Cron

cron是一個小巧的定時任務管理模塊,可以知足咱們絕大部分需求。它支持標準的cron patterns,熟悉linux cron tab的語法就可以很是easy上手。

另一個名氣比較大且功能比較強大的定時模塊是Later,對於功能要求比較高的可用用它,later的缺點是有點複雜。不像cron僅僅要拿來就會用了。

工具包

underscore是一個JS工具庫,主要提供了對數組。對象,函數等一些基礎工具函數,可以同一時候在瀏覽器和NodeJS環境中執行。

建議在每個項目中使用。

moment是一個日期工具庫,主要提供了對日期的解析,驗證。操做和格式化等。假設需要對日期做較多的操做或比較複雜的操做,則它是一個不錯的選擇。畢竟JS自帶的Date功能太弱了。

Connect是一系列的中間件的集合,包含日誌,session, cookie, body parser等。它作了大量HTTP相關的基礎性的工做,Express框架就依賴它進行工做的。

單元測試

Mocha,Karma,Jasmine

參考文獻

相關文章
相關標籤/搜索