在Node.js之前,Web開(kāi)發(fā)人員總是面臨著必須為客戶端和服務(wù)器端腳本使用不同語(yǔ)言的問(wèn)題。傳統(tǒng)上,JavaScript是使用瀏覽器中運(yùn)行的HTML代碼進(jìn)行客戶端腳本編寫(xiě)的語(yǔ)言。Node.js在2009年的發(fā)明引入了服務(wù)器端腳本,其中JavaScript代碼在服務(wù)器上運(yùn)行,并在將它們返回到瀏覽器之前生成完整的動(dòng)態(tài)網(wǎng)頁(yè)。這是Web開(kāi)發(fā)的一項(xiàng)重大突破,因?yàn)镹ode.js允許在客戶端和服務(wù)器端使用JavaScript。
巨大的JavaScript社區(qū)很快意識(shí)到在客戶端和服務(wù)器端腳本中使用相同語(yǔ)言的優(yōu)勢(shì),Node.js已成為Web開(kāi)發(fā)的流行環(huán)境。但是,***沒(méi)有限制,開(kāi)發(fā)人員已經(jīng)為Node.js開(kāi)發(fā)創(chuàng)建了許多框架來(lái)促進(jìn)Web應(yīng)用程序的開(kāi)發(fā)。
框架基本上是一個(gè)幫助JS開(kāi)發(fā)人員發(fā)展其應(yīng)用程序的功能工具。使用框架可以使用公共庫(kù)和模板以及集成可重用組件來(lái)自動(dòng)執(zhí)行許多重復(fù)過(guò)程,避免重復(fù)造輪子。隨著JavaScript的全球普及,Node.js框架的數(shù)量也越來(lái)越多,下面小編就列一下國(guó)外開(kāi)發(fā)者常用的框架。
Express.js
如果您搜索Node.js Web框架,您肯定會(huì)經(jīng)常看到Express.js。Express.js是***Node.js框架之一,并非沒(méi)有理由 - 許多開(kāi)發(fā)人員喜歡它來(lái)創(chuàng)建一個(gè)有效的平臺(tái)來(lái)構(gòu)建健壯的應(yīng)用程序和API。它是眾所周知的MEAN堆棧(MongoDB,Express,Angular和Node.js)的四個(gè)組件之一,它是一個(gè)經(jīng)常用于構(gòu)建Web應(yīng)用程序的工具集。
Express.js是Node.js***的Web框架之一,擁有一套出色的文檔,并享有很好的社區(qū)支持。這意味著您可以輕松找到Express.js的可重用組件和庫(kù)。此外,它不需要使用特定的開(kāi)發(fā)實(shí)踐或特定工具,因此JavaScript開(kāi)發(fā)人員可以獲得***的自由。
Koa2
Koa2是Koa框架的第二個(gè)版本。Koa是創(chuàng)建Express.js的同一團(tuán)隊(duì)的產(chǎn)品; 然而,它與Express.js有很大的不同,并沒(méi)有那么受歡迎。它現(xiàn)在正處于大量開(kāi)發(fā)的過(guò)程中,版本2是該框架的穩(wěn)定版本。
Koa2屬于Node.js MVC框架系列,其中MVC代表模型 - 視圖 - 控制器。MVC的三個(gè)組件是作為應(yīng)用程序數(shù)據(jù)的模型,視圖是通過(guò)app UI的數(shù)據(jù)表示,控制器在模型和視圖之間傳遞請(qǐng)求和更新。
國(guó)內(nèi)有很多框架是基于Koa2開(kāi)發(fā)的,比如阿里的Egg.js。ThinkJS等
Sails.js
Sails.js是Node.js的另一個(gè)MVC框架,它也是由Express.js背后的團(tuán)隊(duì)創(chuàng)建的??蚣苣J(rèn)支持Socket.io,這使其成為社交媒體應(yīng)用,消息傳遞工具和協(xié)作軟件解決方案的***選擇之一。
NestJS
NestJS是Node.js框架中的新手。它專(zhuān)注于服務(wù)器端腳本,旨在構(gòu)建服務(wù)器端應(yīng)用程序。NestJS與其他Node.js Web應(yīng)用程序框架的不同之處在于它使用TypeScript,TypeScript是JavaScript的特殊超集作為其編程語(yǔ)言。如果您熟悉Angular,它也使用TypeScript,那么使用NestJS構(gòu)建后端沒(méi)有問(wèn)題,因?yàn)榻M件和語(yǔ)法看起來(lái)非常熟悉。
有開(kāi)發(fā)服務(wù)器渲染的同學(xué)應(yīng)該對(duì)這個(gè)很熟悉。
LoopBack
LoopBack是Express.js團(tuán)隊(duì)的另一個(gè)創(chuàng)建,基于Express.js開(kāi)發(fā)。Loopback是API框架,允許您構(gòu)建適用于任何客戶端的API,并且可以連接各種設(shè)備。
Meteor.js
***的全??蚣苤?,可以輕松,直接地創(chuàng)建實(shí)時(shí)應(yīng)用程序。優(yōu)點(diǎn)在于它在服務(wù)器端和客戶端使用相同的API,從而提高了整體應(yīng)用程序性能。
Derby.js
Derby.js屬于MVC框架,可用于客戶端和服務(wù)器端腳本開(kāi)發(fā)。
Hapi.js
與我們?cè)谶@里提到的許多其他框架不同,Hapi.js與Express.js無(wú)關(guān),因此可能被認(rèn)為是其競(jìng)爭(zhēng)對(duì)手之一。Hapi.js最初是為了支持大型分布式團(tuán)隊(duì)的工作而創(chuàng)建的,該框架被認(rèn)為是由大型分布式團(tuán)隊(duì)構(gòu)建的企業(yè)級(jí)應(yīng)用程序的***選擇。
Hapi.js通過(guò)專(zhuān)注于插件來(lái)實(shí)現(xiàn)出色的協(xié)作可能性,這些插件允許在不影響應(yīng)用程序其余部分的情況下處理單獨(dú)的組件。該框架非常適合創(chuàng)建可重用的組件,以幫助企業(yè)縮短開(kāi)發(fā)時(shí)間。
Hapi.js框架被用于為沃爾瑪 零售連鎖店,雅虎 網(wǎng)絡(luò)服務(wù)提供商構(gòu)建網(wǎng)絡(luò)應(yīng)用程序和網(wǎng)站,以及英國(guó)政府,信不信由你。
Mean.io
Mean.io是另一個(gè)全??蚣埽瑥乃拿挚梢钥闯鏊褂玫氖悄膫€(gè)堆棧。它提供了開(kāi)箱即用的開(kāi)始應(yīng)用程序開(kāi)發(fā)所需的一切,因此使用Mean.io可以立即開(kāi)始工作。由于它是一個(gè)完整的開(kāi)發(fā)堆棧,因此無(wú)需選擇單獨(dú)的組件并進(jìn)行實(shí)驗(yàn)。此外,此框架中使用的所有工具都可以立即配置為一起使用。
Total.js
一個(gè)MVC服務(wù)器端框架,非常適合創(chuàng)建Web應(yīng)用程序。它在與支持MongoDB,MySQL,PostgreSQL的各種數(shù)據(jù)庫(kù)的兼容性方面非常靈活,并且適用于許多前端網(wǎng)絡(luò),例如Angular,React和Ember。
Total.js非常適合以相對(duì)較低的維護(hù)成本創(chuàng)建響應(yīng)式應(yīng)用程序,并且可以依賴它來(lái)提供足夠的可伸縮性和性能。
如何選擇Node.js框架
我們已經(jīng)查看了目前可用的十個(gè)最著名的Node.js框架,并且已經(jīng)看到所有這些框架都有其優(yōu)點(diǎn)。那么,如何為您的項(xiàng)目做出正確的選擇?
當(dāng)然,你應(yīng)該從項(xiàng)目類(lèi)型開(kāi)始; 分析每個(gè)框架的具體細(xì)節(jié)和匹配方式。您還可以考慮以下因素:
- 文件的可用性和完整性;
- 社區(qū)規(guī)模;
- 在GitHub上公開(kāi)問(wèn)題;
- 它可以解決的問(wèn)題類(lèi)型;
- 靈活性;
- 復(fù)雜程度;
- 與您計(jì)劃使用的其他工具的兼容性。