當前位置:編程學習大全網 - 編程語言 - 如何選擇Node.js Web開發框架

如何選擇Node.js Web開發框架

Node.js非常適用於Web開發,但是現在無論是壹個網站,還是Web App都已經成為包括很多不同部分,如前端、數據庫、業務模塊、功能模塊等等的大型項目,使用Node.js從零開始進行Web開發,也許大中型團隊能夠 勝任,但對於個人和小型團隊來說是不現實的。這時候框架就成為Web開發利器,對於個人開發來說幾乎是必不可少。那麽如何選擇Node.js Web開發框架呢?

首先,我們必須要弄清楚的是,我們需要的是——

程序 or 框架?

程序是已經成型的應用,妳需要的是為它搭建環境、添加配置,然後就可以運行起來;框架則是應用的骨架,妳需要為它添加數據模型、業務邏輯,它才能成為應用,開始提供服務。

事實上,對於Web開發來說,程序和框架的區別正越來越模糊,比如幾乎婦孺皆知的Wordpress,它是壹個博客程序,但它豐富的插件以及高度的 自定義能夠支持很大程度上的二次開發,在這點上它比起壹些PHP框架也並不遜色。我個人認為,如果重心在於提供服務而不是掌握技術,有WordPress 這樣的程序是沒有必要使用框架的。

可惜的是,由於Nodejs還很年輕,目前還沒有WordPress這樣的程序,因此目前在Node.js開發裏,如果想做出自己想要的作品,框架是必然的選擇。如果是某些特定類型的應用,可以嘗試壹些開源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。

Node.js Web框架有哪些?

Node.js裏的Web框架分為API框架和Web應用框架。前者能夠開發出RESTful的API,後者也能開發出RESTful API,但還包括模板、渲染等為前端所準備的功能。

API框架的使用場景是為跨平臺應用提供統壹的數據模型,而渲染由前端/客戶端自行解決。目前比較知名的API框架有

restify(文檔、Github、NPM)

ActionHero.js(官網、Github、NPM)

LoopBack(官網、Github、NPM)

Frisby(官網、Github、NPM)

Fortune.js(官網、Github、NPM)

Web應用框架顧名思義,就是為了打造Web應用所開發的框架。這裏有兩種風格的Web應用框架。

壹個是Sinatra風格,另壹個是Rails風格。Sinatra和Rails都是Ruby語言的Web框架,後者的影響力更大也更為知名。這裏簡單的解釋壹下兩種風格是什麽意思。

Sinatra風格是指高度可配置,註重開發的自由度。代表性的Nodejs Web框架有:

Express(官網、Github、NPM)TJ大神開發,Node.js官方推薦

hapi(官網、Github、NPM)

koa.js(官網、Github、NPM)

flaliron(官網、Github、NPM)

total.js(官網、Github、NPM)

locomotive(官網、Github、NPM)

Rails風格則是指不重復自己和約定優於配置,以及嚴格遵循MVC結構開發。代表性的框架有:

Sails.js(官網、Github、NPM)

geddy(官網、Github、NPM)

CompoundJS(官網、Github、NPM) 原railswayjs

這兩種風格無所謂誰優誰劣,全憑使用者的偏好。

而在這兩種Web框架之外,還有更大型的框架,即全棧框架,其中的代表是MEAN。

MEAN?

MEAN指MongoDB+Express+Angular.js+Node.js,這壹組合包括運行環境、數據庫、Web框架和前端引擎。被稱為 全棧框架(Full-stack framework)。這其中除了Node.js之外,每壹個都是可替換的,目標是創建從前端到後端,全部使用javascript的Web應用。

由於這壹框架的完善性,有人將其稱為LAMP的接班人。LAMP即PHP的典型運行環境,Linux+Apache+MySql+PHP,被大量的用於各種虛擬主機上。

MEAN看似龐大,但事實上要構建完整的現代化Web應用,特別是SPA(單頁面應用),這幾個組件都是難以缺少的,並且,其中每壹項幾乎都是目前 情況下的最佳選擇,因此用於學習和重頭開始打造新的Web應用是非常合適的。但由於實際業務的獨特性,很可能要替換其中的組件,比如用Mysql來替換 MongoDB,因此,學習其中的原理和架構,打造自己的類MEAN框架也是壹種選擇。

作為個人和小團隊來說,全棧框架MEAN基本上足夠了,但目前大多數全棧框架還包含壹項特性,那就是實時,擁有實時功能的框架我們又稱為實時框架。

實時框架好嗎?

實時框架(Real-time framework)指包含了webSocket的雙向通信功能,能夠在服務器和客戶端做到實時通信的框架。

服務端和客戶端自由通信的需求壹直都在,但由於HTTP協議本身的局限性,因此催生了Comet等變通的方法,但即使這樣也離實時相距甚遠。而當 Node.js興起後,另壹個HTML5技術webSocket也漸漸成熟,人們突然發現,實時通信壹下子變得觸手可及,於是webSocket技術在 Node.js中得到大量的應用,其中最為知名的模塊就是socket.io,而各種全棧框架也紛紛加入實時特性來應對更廣闊的開發需求。

目前有代表性的實時框架有:

Meteor(官網、Github、NPM)

MEAN.io(官網、Github、NPM)

Derby(官網、Github、NPM)

SocketStream(官網、Github、NPM)

不過說實話,目前能看到的實時通信的應用場景其實不多,其中大多集中於聊天室、to-do、實時圖表、在線遊戲等領域。其他領域使用實時特性不但沒必要,而且是對服務器資源的浪費。因此目前是否要采用實時框架,要看具體的項目而定。

以上基本就是Node.js Web框架的現狀了,相信看到這裏,對於選擇何種框架讀者已經心裏有數了吧。最後再介紹壹個容易搞混的概念,和解釋壹下我的選擇。

YEOMAN?

第壹次見到這個詞,我還以為它和MEAN有什麽聯系。事實上,它們是截然不同的兩個東西。YEOMAN由YO(腳手架)、grunt(構建工具)、bower(包管理器),它代表的是壹種工作流,與框架開發的思維方式完全不同。具體的介紹可見這裏。

YEOMAN能夠和框架達到類似的目的,都是為構建壹個Web應用做好準備,但是要不要采用YEOMAN,則是見仁見智。我個人的看法是,學習 YEOMAN本身就需要不少時間,並且有壹定的學習門檻。至少在目前,使用框架開發還是相對經濟的,而如果以後YEOMAN這種模式推廣開來,再來學習也 不遲,更何況有壹定的Node.js項目經驗之後再來學習YEOMAN要輕松很多。

事實上,我還是很認可YEOMAN這種Generator+package Manager的模式的,這是因為Node.js本身崇尚微模塊的 概念,即無論是多麽小的功能,都將它們模塊化,甚至大的模塊也要拆分成小的模塊,然後通過搭積木的方式來構建應用。這樣能夠徹底的解耦,對於不容易調試的 Javascript來說,也有助於定位和修復應用中的問題。Generator就是這種理念催生下的產物,通過選擇不同的配置和選項,將積木搭起來。不 過對於這種模式目前大家也還處於實驗當中,不急於進行實際應用。

  • 上一篇:求 :單片機c語言程序設計實訓100例——基於8051+proteu書裏 關於交通燈的的程序? 謝謝
  • 下一篇:熊貓燒香的源代碼是用Delphi編寫的?
  • copyright 2024編程學習大全網