nest.js,egg.js,midway,express,koa的區(qū)別小結
前言
隨著nest.js框架逐漸火起來,對于沒有接觸過nest的小伙伴可能會疑惑nest是什么?在你了解了nest.js是什么的前提下,你可能會疑惑nest.js與傳統(tǒng)的koa、express有什么區(qū)別?針對這兩個問題,結合了網上的一些文章,做一個簡單的總結。
nest是什么?

nest的定義是一個漸進式的Node.js框架,用于構建高效,可靠和可擴展的服務器端應用程序;不要問我為什么要放圖,據(jù)說放圖可以提高訪問量。
nest是一個封裝了node的有規(guī)范的框架,什么是有規(guī)范?意思是必須按照它制定的一套規(guī)則來寫代碼,否則程序就會無法運行。上手成本稍高一點,但是后期維護與擴展會很方便。
nest屬于前端ts大趨勢下深度使用注解特性并提供各種增強開發(fā)體驗的框架,它提供了一套完整的解決方案,包含了認證、數(shù)據(jù)庫、路由、http狀態(tài)碼、安全、配置、請求等開箱即用的技術。
nest.js與koa、express有什么區(qū)別?

koa是一個擁有洋蔥模型中間件的http處理庫,一個請求,經過一系列的中間件,最后生成響應。Koa的大致實現(xiàn)原理:context上下文的保存和傳遞,中間件的管理和next方法的實現(xiàn)。
大概過程:我們koa常用的app.use方法就是將一系列中間件的方法存進了一個數(shù)組,app.listen底層用http.createServer(this.callback())進行封裝,傳進createServer的回調函數(shù)通過compose來處理中間件集合(就是遞歸遍歷中間件數(shù)組的過程),通過req,res(這兩個對象封裝了node的原生http對象)創(chuàng)建上下文,并返回一個處理請求的函數(shù)(參數(shù)是上下文,中間件集合(類似一個鏈表))。
區(qū)別
koa本身幾乎不帶任何其他的庫,如果需要使用路由、錯誤處理、認證等功能需要自己安裝并引入,什么都需要自己DIY。而使用nest.js時就不需要考慮這些問題了,依賴注入,pipe,guard,interceptor等機制,基本覆蓋各種開發(fā)需要,開箱即用。
koa常常與express一起比較,都是偏底層的無態(tài)度的Web框架;而nest.js應該和egg.js,midway這種框架比較。egg.js源于阿里,它的企業(yè)級規(guī)范很多,但各方面能力極強,定位是框架的框架,其再上一層還有midwayjs,完全兼容ts,支持注解,一點都不輸與Nest;此外國內做企業(yè)級NodeJS框架的越來多啦,比如剛出來的daruk等,用過Java Spring 框架和 Angular的同學會發(fā)現(xiàn)NEST借鑒了兩者很多的特性。
egg.js是在koa的基礎上做了一層很好的面向大型企業(yè)級應用的框架封裝,現(xiàn)在也有了非常好的TS特性支持。egg.js更多的是按照洋蔥模型的開發(fā)方式,和AOP編程還是有點區(qū)別的。而nest配合TYPEORM可以在node下?lián)碛胁惠擲PRING的面向切面編程的體驗~
中小型項目推薦egg.js,上手快,概念易懂;大型項目不妨試試NEST.js+typeorm。如果你需要使用一些技術,例如認證、數(shù)據(jù)庫等支持,那么你可能得去搜索、折騰一番,才能知道搭配哪個庫,才行。
到此這篇關于nest.js,egg.js,midway,express,koa的區(qū)別小結的文章就介紹到這了,更多相關nest.js,egg.js,midway,express,koa內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何在Node.js中使用async函數(shù)的方法詳解
這篇文章主要為大家介紹了如何在Node.js中使用async函數(shù)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
Windows系統(tǒng)下安裝Node.js的步驟圖文詳解
這篇文章主要給大家介紹了Windows系統(tǒng)下Node.js的安裝教程,Node.js是用于后端編程的JavaScript框架,文中給出了詳細圖文介紹,有需要的朋友可以參考下,下面來一起看看吧。2016-11-11

