nest.js、egg.js、midway,express、koa的區別

前言

        隨着nest.js框架逐漸火起來,對於沒有接觸過nest的小夥伴可能會疑惑nest是什麼?在你瞭解了nest.js是什麼的前提下,你可能會疑惑nest.js與傳統的koa、express有什麼區別?針對這兩個問題,結合了網上的一些文章,作一個簡單的總結。
        前端

nest是什麼?

     clipboard.png
 

  • nest的定義是一個漸進式的Node.js框架,用於構建高效,可靠和可擴展的服務器端應用程序;不要問我爲何要放圖,聽說放圖能夠提升訪問量。
  • nest是一個封裝了node的有規範的框架,什麼是有規範?意思是必須按照它制定的一套規則來寫代碼,不然程序就會沒法運行。上手成本稍高一點,可是後期維護與擴展會很方便。
  • nest屬於前端ts大趨勢下深度使用註解特性並提供各類加強開發體驗的框架,它提供了一套完整的解決方案,包含了認證、數據庫、路由、http狀態碼、安全、配置、請求等開箱即用的技術。

nest.js與koa、express有什麼區別?

        
clipboard.png

       

  • koa是一個擁有洋蔥模型中間件的http處理庫,一個請求,通過一系列的中間件,最後生成響應。Koa的大體實現原理:context上下文的保存和傳遞,中間件的管理和next方法的實現。
  • 大概過程:咱們koa經常使用的app.use方法就是將一系列中間件的方法存進了一個數組,app.listen底層用http.createServer(this.callback())進行封裝,傳進createServer的回調函數經過compose來處理中間件集合(就是遞歸遍歷中間件數組的過程),經過req,res(這兩個對象封裝了node的原生http對象)建立上下文,並返回一個處理請求的函數(參數是上下文,中間件集合(相似一個鏈表))。

區別


  • koa自己幾乎不帶任何其餘的庫,若是須要使用路由、錯誤處理、認證等功能須要本身安裝並引入,什麼都須要本身DIY。而使用nest.js時就不須要考慮這些問題了,依賴注入,pipe,guard,interceptor等機制,基本覆蓋各類開發須要,開箱即用。node

  • koa經常與express一塊兒比較,都是偏底層的無態度的Web框架;而nest.js應該和egg.js,midway這種框架比較。egg.js源於阿里,它的企業級規範不少,但各方面能力極強,定位是框架的框架,其再上一層還有midwayjs,徹底兼容ts,支持註解,一點都不輸與Nest;此外國內作企業級NodeJS框架的越來多啦,好比剛出來的daruk等,用過JavaSpring 框架和 Angular的同窗會發現NEST借鑑了二者不少的特性。數據庫

  • egg.js是在koa的基礎上作了一層很好的面向大型企業級應用的框架封裝,如今也有了很是好的TS特性支持。egg.js更多的是按照洋蔥模型的開發方式,和AOP編程仍是有點區別的。而nest配合TYPEORM能夠在node下擁有不輸SPRING的面向切面編程的體驗~

      中小型項目推薦egg.js,上手快,概念易懂;大型項目不妨試試NEST.js+typeorm。若是你須要使用一些技術,例如認證、數據庫等支持,那麼你可能得去搜索、折騰一番,才能知道搭配哪一個庫,才行。但願大前端生態愈來愈繁榮!express

相關文章
相關標籤/搜索