nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)
前言
隨著nest.js框架逐漸火起來(lái),對(duì)于沒(méi)有接觸過(guò)nest的小伙伴可能會(huì)疑惑nest是什么?在你了解了nest.js是什么的前提下,你可能會(huì)疑惑nest.js與傳統(tǒng)的koa、express有什么區(qū)別?針對(duì)這兩個(gè)問(wèn)題,結(jié)合了網(wǎng)上的一些文章,做一個(gè)簡(jiǎn)單的總結(jié)。
nest是什么?
nest的定義是一個(gè)漸進(jìn)式的Node.js框架,用于構(gòu)建高效,可靠和可擴(kuò)展的服務(wù)器端應(yīng)用程序;不要問(wèn)我為什么要放圖,據(jù)說(shuō)放圖可以提高訪問(wèn)量。
nest是一個(gè)封裝了node的有規(guī)范的框架,什么是有規(guī)范?意思是必須按照它制定的一套規(guī)則來(lái)寫代碼,否則程序就會(huì)無(wú)法運(yùn)行。上手成本稍高一點(diǎn),但是后期維護(hù)與擴(kuò)展會(huì)很方便。
nest屬于前端ts大趨勢(shì)下深度使用注解特性并提供各種增強(qiáng)開(kāi)發(fā)體驗(yàn)的框架,它提供了一套完整的解決方案,包含了認(rèn)證、數(shù)據(jù)庫(kù)、路由、http狀態(tài)碼、安全、配置、請(qǐng)求等開(kāi)箱即用的技術(shù)。
nest.js與koa、express有什么區(qū)別?
koa是一個(gè)擁有洋蔥模型中間件的http處理庫(kù),一個(gè)請(qǐng)求,經(jīng)過(guò)一系列的中間件,最后生成響應(yīng)。Koa的大致實(shí)現(xiàn)原理:context上下文的保存和傳遞,中間件的管理和next方法的實(shí)現(xiàn)。
大概過(guò)程:我們koa常用的app.use方法就是將一系列中間件的方法存進(jìn)了一個(gè)數(shù)組,app.listen底層用http.createServer(this.callback())進(jìn)行封裝,傳進(jìn)createServer的回調(diào)函數(shù)通過(guò)compose來(lái)處理中間件集合(就是遞歸遍歷中間件數(shù)組的過(guò)程),通過(guò)req,res(這兩個(gè)對(duì)象封裝了node的原生http對(duì)象)創(chuàng)建上下文,并返回一個(gè)處理請(qǐng)求的函數(shù)(參數(shù)是上下文,中間件集合(類似一個(gè)鏈表))。
區(qū)別
koa本身幾乎不帶任何其他的庫(kù),如果需要使用路由、錯(cuò)誤處理、認(rèn)證等功能需要自己安裝并引入,什么都需要自己DIY。而使用nest.js時(shí)就不需要考慮這些問(wèn)題了,依賴注入,pipe,guard,interceptor等機(jī)制,基本覆蓋各種開(kāi)發(fā)需要,開(kāi)箱即用。
koa常常與express一起比較,都是偏底層的無(wú)態(tài)度的Web框架;而nest.js應(yīng)該和egg.js,midway這種框架比較。egg.js源于阿里,它的企業(yè)級(jí)規(guī)范很多,但各方面能力極強(qiáng),定位是框架的框架,其再上一層還有midwayjs,完全兼容ts,支持注解,一點(diǎn)都不輸與Nest;此外國(guó)內(nèi)做企業(yè)級(jí)NodeJS框架的越來(lái)多啦,比如剛出來(lái)的daruk等,用過(guò)Java Spring 框架和 Angular的同學(xué)會(huì)發(fā)現(xiàn)NEST借鑒了兩者很多的特性。
egg.js是在koa的基礎(chǔ)上做了一層很好的面向大型企業(yè)級(jí)應(yīng)用的框架封裝,現(xiàn)在也有了非常好的TS特性支持。egg.js更多的是按照洋蔥模型的開(kāi)發(fā)方式,和AOP編程還是有點(diǎn)區(qū)別的。而nest配合TYPEORM可以在node下?lián)碛胁惠擲PRING的面向切面編程的體驗(yàn)~
中小型項(xiàng)目推薦egg.js,上手快,概念易懂;大型項(xiàng)目不妨試試NEST.js+typeorm。如果你需要使用一些技術(shù),例如認(rèn)證、數(shù)據(jù)庫(kù)等支持,那么你可能得去搜索、折騰一番,才能知道搭配哪個(gè)庫(kù),才行。
到此這篇關(guān)于nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)nest.js,egg.js,midway,express,koa內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows系統(tǒng)下使用Sublime搭建nodejs環(huán)境
最近在研究Nodejs開(kāi)發(fā),俗話說(shuō),工欲善其事,必先利其器,當(dāng)然要找到一款用著順手的編輯器作為開(kāi)始。這里我們選擇的是Sublime Text 3,除了漂亮的用戶界面,最吸引我的就是它的插件擴(kuò)展功能以及跨平臺(tái)特性。2015-04-04koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼
這篇文章主要介紹了koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05node的process以及child_process模塊學(xué)習(xí)筆記
這篇文章主要介紹了node的process以及child_process模塊學(xué)習(xí)筆記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03使用iojs的jsdom庫(kù)實(shí)現(xiàn)同步系統(tǒng)時(shí)間
本文給大家分享的是使用iojs的jsdom庫(kù)實(shí)現(xiàn)與http://open.baidu.com/special/time/ 同步系統(tǒng)時(shí)間。思路非常的清晰,這里推薦給大家,有需要的小伙伴可以參考下。2015-04-04Mongoose經(jīng)常返回e11000 error的原因分析
這篇文章主要給大家分析了Mongoose經(jīng)常返回e11000 error的原因,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友可以們下面來(lái)一起看看吧。2017-03-03在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例
這篇文章主要介紹了在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例,使用FS模塊實(shí)現(xiàn),需要的朋友可以參考下2014-06-06nodejs服務(wù)內(nèi)存泄露排查過(guò)程和優(yōu)化方法
在開(kāi)發(fā)和部署Node.js應(yīng)用程序時(shí),內(nèi)存泄露是一個(gè)常見(jiàn)的挑戰(zhàn),本文將探討如何對(duì)于一個(gè)陌生項(xiàng)目進(jìn)行內(nèi)存排查和優(yōu)化的方法,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11windows系統(tǒng)下安裝npm(Node.js)方法教程
在Windows環(huán)境下進(jìn)行Node.js的安裝并不是一件復(fù)雜的事情,但是在安裝過(guò)程中需要注意一些細(xì)節(jié),下面這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)下安裝npm(Node.js)的相關(guān)資料,需要的朋友可以參考下2023-12-12