在瀏覽器之外運行 JavaScript 對於 JavaScript 愛好者來講很是神奇,同時也確定是 web 應用程序開發界最受歡迎的進步之一。全球各地的開發者張開雙臂擁抱 NodeJS。html
對於新手來講,Node.js 是 JavaScript 運行時,容許你在瀏覽器以外服務器上運行 JavaScript 代碼。它是基於谷歌 Chrome 的 V8 虛擬機引擎創建的,V8 虛擬機引擎用於在 Chrome 瀏覽器中支持 JavaScript。前端
NodeJS 逐漸普及的步伐是由於它可讓你只使用 JavaScript 就能夠創建大規模、實時性、可擴展的移動和 Web 應用程序。node
隨着節點生態系統的增加,框架也開始着手加快工做流程。有許多的 Node.js 框架,容許你構建實時的端到端網絡應用,而無需任何其餘第三方 Web 服務器、應用服務器、工具和技術。git
通用性的 Node 框架就像快遞,Koa 和 Hapi 更加靈活,讓你作你想要的一切,最大限度的知足開發需求。可是,在最初你須要投入更多的努力,更加依靠開發者做出正確的決策。github
而另外一方面,像 Mean.io,Meteor, Derby 和 Mojito,有本身的標準結構和技術體系,靈活性較差。然而這些框架不會給開發者太多作錯誤決策的空間。web
讓咱們來看看目前可用的最好、最強大的 NodeJS 框架,並幫助你創建實時的、各類規模和複雜性的可擴展 Web 應用程序。數據庫
對於一個已經在使用 node.js 的開發人員來講,Express 或者"node.js express"並非一個新鮮事。Express 框架提供了對 node.js 原生 API 的比較好的封裝,從而使開發者更加容易地使用node.js。express
Express 框架提供了用來開發強壯的 web/移動應用,以及 API 的全部功能。而且開發人員還可以方便地爲它開發插件和擴展,從而增長 Express 的能力。下面列出了一些 Express 提供的基本的功能:json
經過使用 Node Express,你可使用更少的代碼來實現功能。至少經過使用 Node Express,你能夠實現中間件來響應 http 請求,能夠定義路由表來定義對不一樣請求的響應函數,還可使用模板引擎來輸出 html 頁面。後端
對於一個 NodeJS 開發新手來講,Express 還提供了以下的好處:
Express 根據 MIT 協議進行開源,目前 StrongLoop 對它提供支持。你也能夠經過 Express 的官方網站 expressjs.com 得到更多的信息。
Sails 做爲一個很是穩固的 nodejs 框架,提供了創建任何規模的 web 應用所須要的全部功能功能。
Sails.js 在底層使用了 express框架來提供對 http 請求的處理,同時使用 Socket.IO 框架來處理WebSocket 請求。同時做爲一個前端應用開發框架,它容許開發人員選擇他/她熟悉的技術來開發應用。
同時 Sails.js 也經過 waterline 框架實現了 ORM 功能。經過這個功能,你的應用程序能夠在不進行大的修改的前提下,就能夠從一個後端數據庫,切換到另一個後端數據庫(也能夠是一個NoSQL數據庫)。
Sails 特別適合用來開發對數據的實時更新有較高要求的應用,好比多人棋類遊戲,單頁web應用等等。若是你對 Ruby, Django 或者 Zend 有必定的瞭解,那麼你將很是容易理解Sail中的概念。
簡單來講,Sails.js 既給開發者提供了一個優秀的 MVC 框架,也提供了必定的靈活性,讓開發者能夠自主選擇前端開發方式和後端的數據庫。 Sails.js 是由 Mike McNeil 建立的,如今由 Treeline and balderdash 提供支持。Sails.js 在 MIT 協議下開源。
你能夠在網站 sailsjs.org 上找到更多關於這個框架的內容。
KOA 是 node.js mvc 框架的後起之秀,在2013第四個季度才發佈了第一個版本。開發 KOA 的人員基原本自 Express 開發團隊,TJ Holowaychuk 是 KOA 開發團隊的領導者。雖然 KOA 大部分開發人員來自 Express,可是他們使用了徹底不一樣的技術來開發 KOA,而且 KOA 正成爲 Express 一個強有力的競爭對手。
KOA 框架的核心是 ES6 的 generator。KOA 使用 generator 來實現中間件的流程控制,使用try/catch 來加強異常處理,同時在 KOA 框架中你再也看不到複雜的 callback 回調了。
KOA 框架自己很是小,只打包了一些必要的功能,可是它自己經過良好的模塊化組織,讓開發人員能夠按照本身的想法來實現一個擴展性很是好的應用。
許多 JavaScript/Node.js 的忠實開發者都開始選擇使用 KOA 來開發新的項目,由於 KOA 提供了更多的靈活性開發應用程序。
你能夠經過koajs.com獲取更多的信息。
Meteor 框架是 Node.js 上最出色的全棧框架。項目在 GitHub 上有 28K+ 的贊,擁有大量的自定義包,龐大的社區支持,很是好的教程和文檔。在這個領域 Meteor 毫無疑問是王者,你能夠用它構建純 Javascript 的實時 Web 和 手機應用。
Meteor 最優秀的部分是,不管是服務器端的數據庫訪問,商業邏輯實現,仍是客戶端的展現,全部的流程都是無縫鏈接,開箱即用。整個框架使用統一的 API,Meteor API 同時適用於客戶端和服務器端。
它使用的 DDP 協議可讓你在後端鏈接簡單的數據庫服務、企業數據倉庫、甚至 IOT 傳感器。Meteor 帶有本身默認的棧,但又有足夠的靈活性,可讓你選擇本身的技術方案。若是你不須要嘗試其餘的框架或者沒有其餘的條件限制,你能夠直接使用默認配置,進行 快速地應用開發。
Meteor 擁有專業化的開發團隊,頂級風投的大量資金支持,這都讓 Meteor 可以時刻保持業界領先。
你能夠經過 meteor.com 網站進一步瞭解 Meteor。
Derby.JS 跟它的直接競爭對手 Meteor、Mean.io、以及 Mojito 同樣,也是一個全棧框架。它運行在 Nodejs + mongo + Redis 的上層。Derby 主要部分是一個叫作 Racer 的數據同步引擎,它可以讓數據在數據庫、服務器和瀏覽器之間的同步變得垂手可得。
Racer 的確可以讓基於 Derby 框架的應用運行地更快,不管是在瀏覽器端仍是服務器端,對於單頁面應用來講,它都是一個完美的選擇方案。Derby 常常被用來和業界老大 Meteor 進行比較,Meteor 項目已經開發了一段很長時間,於是可以提供更多的開箱即用的功能,使得在更短期內開發複雜的 web 應用變得更加容易。
而 Derby 更適合於須要更快運行速度的應用,而且它的模塊化方式可以讓應用更靈活,更容易擴展。Derby 最近的發展有些緩慢,但它並無出局,仍有改寫 Nodejs 全棧框架遊戲規則的潛力。
你能夠經過 derbyjs.com網站進一步瞭解 Derby。
Flatiron 框架背後的核心思想是讓你能使用它所提供的組件以及一些第三方庫構建你本身的全棧框架。很酷不是嗎?我我的十分的喜歡這種方式。然而,這帶來的是更高的複雜度,並有可能會被使用錯誤組件的開發者搞得一團糟。
你能稱之爲一個由多個相互獨立的組件鬆散地組建起來的全棧 MVC 框架。Flatiron 框架支持Director,一個從頭到腳都使用JavaScript 搭建起來的,並不須要任何依賴項的 URL 路由組件。
經過一個叫 Plates 的模板引擎,Flatiron 可以支持模版語言,然而數據管理是經過 json 實現的,並能與任何一種數據庫一塊兒使用。Flatiron 如今由 Nodejitsu 以及其餘的社區成員在進行維護,並作的至關不錯,是一個不那麼流行卻值得一看的框架。
你能在 flatironjs.org 上得到更多信息。
Hapi 是爲數很少的不依賴於 Express 的 node.js 框架,如今甚至已經徹底獨立於 Express 了。在最近一段時間中,不少開發者選擇了 Hapi 而非 Express,這使得它或多或少變爲了 Express 的競爭對手。
Hapi 在衆多 nodejs 的框架中並不是一個老牌選手,然而它卻成功的在這當中創造了本身的一個生態圈。Hapi 致力於徹底的分離 node HTTP 服務器、路由以及業務邏輯,並更多的聚焦於如何儘量的經過配置而非代碼來控制東西。
Hapi 最初是由 Eran Hammer 以及在 Walmart labs 的團隊爲了工做須要開發的。其後便以極快的速度受到了歡迎,如今已在 MIT 許可下成爲一個開源的框架,可以免費的被下載和使用。
迪士尼、雅虎、Pebble、beats 音樂以及 Walmart 這樣的公司都在使用 HAPI 做爲他們旗下一個或多個項目的網絡應用框架,它的影響力即可見一斑了。
你能在 hapijs.com上找到更多關於 Hapi 的信息。
Mean 是 Mongo DB,Express,Angular 和 Node.js 捆綁在一塊兒的組合。基本上說只要有它,你就擁有了數據庫層,服務器端和網頁前端的整套工具,足以開發全部類型的現代網絡應用。
Mean 是一個完整獨立的包,它涵蓋了應用開發的全部方面。尤爲適合於那些須要快速開始開發的人。它內置多種技術並且在聯合使用時變現很是好。能夠用於建立任意大小和複雜度的應用。
使用 Mean,開發者能夠避免經歷混合和匹配不一樣的技術棧。經過 mean 棧,你能夠減小安裝和配置MongoDB,Express,Angular 和 Node.js須要的時間。Mean.io 的另外一個巨大好處就是全部的棧都使用 JavaScript,服務器端 Express 對MongoDB 的訪問(json)和通多 Angular 從 Node 到客戶端。
在這裏 - mean.io瞭解更多Mean.io的相關信息。
還有一個名爲 mean.js 的 mean 分支也至關流行。
Mojito 由 Yahoo 開發並迅速取得成功。然而很快又帶着關於框架的空前的成功坐到了冷板凳,就像Meteor 和 Mean stack 那樣。
Mojito 一樣是一個 MVC 應用框架,很是適合於建立使用 HTML5,JavaScript 和 CSS3 的高性能的網絡和手機應用。Mojito 的根本目標是提供一個框架,該框架用於構建標準的基於跨平臺的應用。使之能夠同時運行在客戶端和服務器端,並實現高性能。
你能夠在 Yahoo 開發者網頁—— mojito 得到更多信息。
SocketStream 是一個有趣的框架,專一於客戶端和服務端數據的快速同步,它致力於先後端數據的實時更新。
它最大的特色是不嚴格要求你使用指定的客戶端技術,也不限定數據庫的 ORM。我趨向於將它和有一樣功能的兄弟項目 Sail.js 作比較,它更適合作單頁 web 應用,多用戶遊戲,聊天客戶端,網絡應用,交易平臺以及全部的須要將數據從服務端實時推送到客戶端的應用。
服務端和客戶端使用 JSON 來傳輸數據,比較理想的是使用 websockets 在服務端事件發生時自動將數據推送到客戶端,Socket stream 是由 Owen Barnes 建立,如今由 Paul Jensen 和團隊維護,他們的工做讓這個框架獲得了應有的榮耀。
SocketStream framework 在最近幾月得到了很好的發展,將來一片光明。
更多 SocketStream 信息請瀏覽 github 上的 - socketstream。
其它相似優秀框架還有:total.js, Geddy.JS, Locomotive, compound 和 Restify。
Web 和應用開發的風景變化是很是快速的,開發人員轉向快速框架和清潔項目交付(clean project delivery)。使用 node 框架的最大優點是提供了高層級結構的盒子,你能夠關注擴展您的應用程序而不是努力在建設上支出。
框架提供了多樣的特性,工做在不一樣的底層,試圖解決構建實時的常見問題,並解決了可伸縮的和複雜的 Web 應用程序在速度上的問題。在這篇文章裏討論的框架是當今市場上最好的 node.js 框架。
原文連接:http://mdsa.51cto.com/art/201604/509307.htm#topx