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