第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何選擇Node.js Web開發(fā)框架?

如何選擇Node.js Web開發(fā)框架?

阿波羅的戰(zhàn)車 2019-02-14 15:11:34
如何選擇Node.js Web開發(fā)框架
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

Node.js非常適用于Web開發(fā),但是現(xiàn)在無論是一個(gè)網(wǎng)站,還是Web App都已經(jīng)成為包括很多不同部分,如前端、數(shù)據(jù)庫、業(yè)務(wù)模塊、功能模塊等等的大型項(xiàng)目,使用Node.js從零開始進(jìn)行Web開發(fā),也許大中型團(tuán)隊(duì)能夠 勝任,但對于個(gè)人和小型團(tuán)隊(duì)來說是不現(xiàn)實(shí)的。這時(shí)候框架就成為Web開發(fā)利器,對于個(gè)人開發(fā)來說幾乎是必不可少。那么如何選擇Node.js Web開發(fā)框架呢?
首先,我們必須要弄清楚的是,我們需要的是——
程序 or 框架?
程序是已經(jīng)成型的應(yīng)用,你需要的是為它搭建環(huán)境、添加配置,然后就可以運(yùn)行起來;框架則是應(yīng)用的骨架,你需要為它添加數(shù)據(jù)模型、業(yè)務(wù)邏輯,它才能成為應(yīng)用,開始提供服務(wù)。
事實(shí)上,對于Web開發(fā)來說,程序和框架的區(qū)別正越來越模糊,比如幾乎婦孺皆知的Wordpress,它是一個(gè)博客程序,但它豐富的插件以及高度的 自定義能夠支持很大程度上的二次開發(fā),在這點(diǎn)上它比起一些PHP框架也并不遜色。我個(gè)人認(rèn)為,如果重心在于提供服務(wù)而不是掌握技術(shù),有WordPress 這樣的程序是沒有必要使用框架的。
可惜的是,由于Nodejs還很年輕,目前還沒有WordPress這樣的程序,因此目前在Node.js開發(fā)里,如果想做出自己想要的作品,框架是必然的選擇。如果是某些特定類型的應(yīng)用,可以嘗試一些開源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。
Node.js Web框架有哪些?
Node.js里的Web框架分為API框架和Web應(yīng)用框架。前者能夠開發(fā)出RESTful的API,后者也能開發(fā)出RESTful API,但還包括模板、渲染等為前端所準(zhǔn)備的功能。
API框架的使用場景是為跨平臺應(yīng)用提供統(tǒng)一的數(shù)據(jù)模型,而渲染由前端/客戶端自行解決。目前比較知名的API框架有
restify(文檔、Github、NPM)
ActionHero.js(官網(wǎng)、Github、NPM)
LoopBack(官網(wǎng)、Github、NPM)
Frisby(官網(wǎng)、Github、NPM)
Fortune.js(官網(wǎng)、Github、NPM)
Web應(yīng)用框架顧名思義,就是為了打造Web應(yīng)用所開發(fā)的框架。這里有兩種風(fēng)格的Web應(yīng)用框架
一個(gè)是Sinatra風(fēng)格,另一個(gè)是Rails風(fēng)格。Sinatra和Rails都是Ruby語言的Web框架,后者的影響力更大也更為知名。這里簡單的解釋一下兩種風(fēng)格是什么意思。
Sinatra風(fēng)格是指高度可配置,注重開發(fā)的自由度。代表性的Nodejs Web框架有:
Express(官網(wǎng)、Github、NPM)TJ大神開發(fā),Node.js官方推薦
hapi(官網(wǎng)、Github、NPM)
koa.js(官網(wǎng)、Github、NPM)
flaliron(官網(wǎng)、Github、NPM)
total.js(官網(wǎng)、Github、NPM)
locomotive(官網(wǎng)、Github、NPM)
Rails風(fēng)格則是指不重復(fù)自己和約定優(yōu)于配置,以及嚴(yán)格遵循MVC結(jié)構(gòu)開發(fā)。代表性的框架有:
Sails.js(官網(wǎng)、Github、NPM)
geddy(官網(wǎng)、Github、NPM)
CompoundJS(官網(wǎng)、Github、NPM) 原railswayjs
這兩種風(fēng)格無所謂誰優(yōu)誰劣,全憑使用者的偏好。
而在這兩種Web框架之外,還有更大型的框架,即全??蚣?,其中的代表是MEAN。
MEAN?
MEAN指MongoDB+Express+Angular.js+Node.js,這一組合包括運(yùn)行環(huán)境、數(shù)據(jù)庫、Web框架和前端引擎。被稱為 全棧框架(Full-stack framework)。這其中除了Node.js之外,每一個(gè)都是可替換的,目標(biāo)是創(chuàng)建從前端到后端,全部使用javascript的Web應(yīng)用。
由于這一框架的完善性,有人將其稱為LAMP的接班人。LAMP即PHP的典型運(yùn)行環(huán)境,Linux+Apache+MySql+PHP,被大量的用于各種虛擬主機(jī)上。
MEAN看似龐大,但事實(shí)上要構(gòu)建完整的現(xiàn)代化Web應(yīng)用,特別是SPA(單頁面應(yīng)用),這幾個(gè)組件都是難以缺少的,并且,其中每一項(xiàng)幾乎都是目前 情況下的最佳選擇,因此用于學(xué)習(xí)和重頭開始打造新的Web應(yīng)用是非常合適的。但由于實(shí)際業(yè)務(wù)的獨(dú)特性,很可能要替換其中的組件,比如用Mysql來替換 MongoDB,因此,學(xué)習(xí)其中的原理和架構(gòu),打造自己的類MEAN框架也是一種選擇。
作為個(gè)人和小團(tuán)隊(duì)來說,全??蚣躆EAN基本上足夠了,但目前大多數(shù)全??蚣苓€包含一項(xiàng)特性,那就是實(shí)時(shí),擁有實(shí)時(shí)功能的框架我們又稱為實(shí)時(shí)框架。
實(shí)時(shí)框架好嗎?
實(shí)時(shí)框架(Real-time framework)指包含了webSocket的雙向通信功能,能夠在服務(wù)器和客戶端做到實(shí)時(shí)通信的框架。
服務(wù)端和客戶端自由通信的需求一直都在,但由于HTTP協(xié)議本身的局限性,因此催生了Comet等變通的方法,但即使這樣也離實(shí)時(shí)相距甚遠(yuǎn)。而當(dāng) Node.js興起后,另一個(gè)HTML5技術(shù)webSocket也漸漸成熟,人們突然發(fā)現(xiàn),實(shí)時(shí)通信一下子變得觸手可及,于是webSocket技術(shù)在 Node.js中得到大量的應(yīng)用,其中最為知名的模塊就是socket.io,而各種全??蚣芤布娂娂尤雽?shí)時(shí)特性來應(yīng)對更廣闊的開發(fā)需求。
目前有代表性的實(shí)時(shí)框架有:
Meteor(官網(wǎng)、Github、NPM)
MEAN.io(官網(wǎng)、Github、NPM)
Derby(官網(wǎng)、Github、NPM)
SocketStream(官網(wǎng)、Github、NPM)
不過說實(shí)話,目前能看到的實(shí)時(shí)通信的應(yīng)用場景其實(shí)不多,其中大多集中于聊天室、to-do、實(shí)時(shí)圖表、在線游戲等領(lǐng)域。其他領(lǐng)域使用實(shí)時(shí)特性不但沒必要,而且是對服務(wù)器資源的浪費(fèi)。因此目前是否要采用實(shí)時(shí)框架,要看具體的項(xiàng)目而定。
以上基本就是Node.js Web框架的現(xiàn)狀了,相信看到這里,對于選擇何種框架讀者已經(jīng)心里有數(shù)了吧。最后再介紹一個(gè)容易搞混的概念,和解釋一下我的選擇。
YEOMAN?
第一次見到這個(gè)詞,我還以為它和MEAN有什么聯(lián)系。事實(shí)上,它們是截然不同的兩個(gè)東西。YEOMAN由YO(腳手架)、grunt(構(gòu)建工具)、bower(包管理器),它代表的是一種工作流,與框架開發(fā)的思維方式完全不同。具體的介紹可見這里。
YEOMAN能夠和框架達(dá)到類似的目的,都是為構(gòu)建一個(gè)Web應(yīng)用做好準(zhǔn)備,但是要不要采用YEOMAN,則是見仁見智。我個(gè)人的看法是,學(xué)習(xí) YEOMAN本身就需要不少時(shí)間,并且有一定的學(xué)習(xí)門檻。至少在目前,使用框架開發(fā)還是相對經(jīng)濟(jì)的,而如果以后YEOMAN這種模式推廣開來,再來學(xué)習(xí)也 不遲,更何況有一定的Node.js項(xiàng)目經(jīng)驗(yàn)之后再來學(xué)習(xí)YEOMAN要輕松很多。
事實(shí)上,我還是很認(rèn)可YEOMAN這種Generator+package Manager的模式的,這是因?yàn)镹ode.js本身崇尚微模塊的 概念,即無論是多么小的功能,都將它們模塊化,甚至大的模塊也要拆分成小的模塊,然后通過搭積木的方式來構(gòu)建應(yīng)用。這樣能夠徹底的解耦,對于不容易調(diào)試的 Javascript來說,也有助于定位和修復(fù)應(yīng)用中的問題。Generator就是這種理念催生下的產(chǎn)物,通過選擇不同的配置和選項(xiàng),將積木搭起來。不 過對于這種模式目前大家也還處于實(shí)驗(yàn)當(dāng)中,不急于進(jìn)行實(shí)際應(yīng)用。



查看完整回答
反對 回復(fù) 2019-03-02
  • 2 回答
  • 0 關(guān)注
  • 548 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號