2019年,你需要關注這些Node API和Web框架

對于Node.js框架和開源軟件來說,2018年是非常有趣的一年。開發者社區討論了企業贊助對開源項目的作用以及如何維護那些沒有經濟支持卻有數百萬人使用的項目。同樣,安全問題也得到了極大關注,一些流行的Node/JS軟件包被劫持,Github為托管的項目推出了安全警報功能。

在這篇文章中,我們為Node.js框架增加了新的類別,如贊助情況、捐贈情況和NPM審計漏洞,以便更好地了解每個框架如何解決這些問題。框架按字母順序排列。

數據圖表

Github star數

在Github星標數量方面,Sails、Koa和Express明顯高于其他框架。但是,在2019年,星標總量可能不能作為最具相關性的指標,我們還需要考慮增長情況。

\"\"

2018年star數增長

在2018年星標數量增長方面,Nest呈現出非常明顯的爆發式增長。Y軸是從2018年1月初到2018年12月中旬的增長百分比。有趣的是,相比之下,Sails和Express幾乎是扁平的,但這也可能是由于市場出現了飽和:有興趣給Node.js框架加星標的人總共就那么多。

\"\"

依賴關系

從這個角度來看,Nest非常少,而Sails幾乎是Nest的四倍。

\"\"

NPM每周下載量

Express讓所有競爭對手的下載量相形見絀。只有Koa和Hapi在這張圖上出現了微小的彩色條紋。當然,有些框架在內部使用了Express,比如Sails和Nest。

\"\"

選擇Node.js框架

每個框架都有自己的目標、設計決策和特點。你應該仔細考慮這些東西是否適合你的用例。

有時候可以這么想:

“我們需要一個完整的Web應用程序,包括HTML模板、數據庫模型、身份驗證、API集成、郵件列表,等等”。

在本文中,我們將這些標記為全棧。一個完全不同的用例可以是:

“我們只需要一個后端API端點,用于攝取JSON格式的IOT數據”。

我們將這些標記為API。當然,你的用例可能是介于兩者之間。在這種情況下,你需要一個框架,先從小規模開始,然后通過加入插件或中間件增加其他復雜性和功能。我們將這些標記為Minimal,因為這些框架的核心都很小,不過生態系統為它們提供了其他模塊。

AdonisJs

AdonisJS生態系統附帶了一組特定模塊,可以插入到核心框架中。這意味著,測試運行器或模板引擎對于大多數用戶來說可能是新的,不過你也可以使用其他運行器或模板引擎。

AdonisJs于2016年啟動,目標是成為一個全棧式框架:可以直接使用HTTP請求路由、模板、身份驗證和數據庫ORM。

在社區中,人們通常將AdonisJs與PHP的Laravel進行比較。

HTTPS://ADONISJS.COM/

\"\"

Exepress

Node.JS API框架的祖先。它仍然是一個非常小的框架,為你提供了一個簡單的API服務器,用戶通過眾多可用的中間件項目來添加額外功能。

因為占用資源少,Sails.js和Nest等框架使用Express作為基礎應用程序層,然后使用額外的功能對其進行擴展。

HTTP://EXPRESSJS.COM/

\"\"

Fastify

Fastify是一個100%針對性能進行優化的API框架。受到Hapi和Express的啟發,維護人員選擇專注于在開發者體驗和原始速度及性能之間實現平衡。

Fastify仍然是一個非常小的框架,但中間件架構與Express和Restify中間件兼容,極大地擴展了可能的用例。

Fastify提供了實驗性的HTTP 2.0支持,并支持TypeScript類型。

HTTPS://WWW.FASTIFY.IO/

\"\"

Hapi

Hapi由沃爾瑪開發,旨在為他們的電子商務業務提供堅實的基礎。現在作為開源框架分拆出來,與沃爾瑪已經沒有關系。Hapi現在仍然很受歡迎。

Hapi提供了大量獨立但緊密集成的插件,提供了日志記錄、模板、緩存、錯誤處理等功能。它的對象驗證插件Joi(https://github.com/hapijs/joi)和框架本身一樣很受歡迎。

在社區中,Hapi因其API、健壯性和可靠性而備受贊譽。此外,Hapi沒有任何外部代碼依賴,因此其安全性更加可控。

Hapi 17.x使用ES6和ES7進行了全面重寫。

HTTPS://HAPIJS.COM/

\"\"

Koa

Koa的開發者與Express是同一波人,但它是以利用新的Javascript語言功能為目標,如async/await。Koa框架甚至比Express更小,基本安裝中不包含路由。

Koa是最早利用ES6和ES7功能的API框架之一。

Koa提供了一份第三方中間件列表,幾乎和Express的一樣長,盡管有很多中間件似乎已經被遺棄或者沒有人進行定期維護。

HTTPS://KOAJS.COM/

\"\"

Nest

Nest于2017年嶄露頭角,并在2018年大受歡迎(至少從Github的星標數來看)。Nest與其他框架略有不同,因為它是基于TypeScript的,并使用了Express。Nest也可以使用“普通”JavaScript,但框架作者還是極力建議使用TypeScript。

Nest提供了一個內置的GraphQL適配器,利用了流行的Apollo框架,盡管現在已經有很多傳統的ORM和數據庫可用的解決方案,例如Mongoose(Mongo)或TypeORM(MySQL/Postgres)。

對于Nest來說,2018年是美好的一年,我們很期待2019年它將為我們帶來哪些東西。

HTTPS://NESTJS.COM/

\"\"

RESTify

Restify的目標是成為一個構建RESTful API的框架,而其他框架傾向于解決API、靜態內容和模板解析問題。它已經被用在NPM、Netflix、Joyent和Pinterest的生產環境中。

Restify的目標在它的文檔和指南中可見一斑。它們很簡單,而且直接了當。可以使用插件API來構建擴展,不過第三方插件并不多。

可調試性是Restify的一個主要特點,它支持自動生成Dtrace探針,這是其他框架中不常見的功能。

HTTP://RESTIFY.COM/

\"\"

Sails

Sails可以說是第一個提供類似于Ruby on Rails“全棧式”體驗的Node.js Web框架。它提供了一個MVC框架和匹配的技術棧滿足大多數業務場景的需求。

你可以非常快速地搭建一個CRUD應用程序,因為代碼即配置原則以及框架為開發人員選擇的默認設置。與Rails類似,Sails也提供了腳手架生成器,可以基于對象/實體創建API端點。Sails還提供了自己的Waterline ORM,支持多種數據庫類型,如Postgres、MongoDB和Redis。

該框架最初由Balderdashy公司開發,現在這家公司已更名“Sails公司”,為Sails提供企業支持。

HTTPS://SAILSJS.COM/

\"\"

Server.js

Server.js始于2017年,在2018年一直保持穩健的增長。作為一個新框架,Server.js使用了現代ES2016和ES2017語言功能。它提供的組件包括:文件服務、Websocket、CSRF、SSL,等等。默認情況下,甚至可以將會話保存在Redis中。

因為Server.js也基于Express的,因此你也可以使用Express中間件來擴展其功能。

除了有一個很棒的NPM軟件包名之外,Server.js看起來也非常有前途,雖然它很輕量,但卻是一個全棧式API和Web框架。

HTTPS://SERVERJS.IO/

\"\"

英文原文:

https://checklyhq.com/blog/2018/12/node.js-api-and-web-frameworks-for-2019/

更多內容,請關注前端之巔。

\"\"

會議推薦

2019年6月,GMTC全球大前端技術大會2019即將到來。小程序、Flutter、移動AI、工程化、性能優化…大前端的下一站在哪里?點擊下圖了解更多詳情。

\"\"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275851.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275851.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275851.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ai創造了哪些職業_關于創造職業的思考

ai創造了哪些職業When I was growing up, the idea of a creative career wasn’t an option.當我長大時,創意事業的想法不是一個選擇。 I had enjoyed doodling, arts and crafts as a kid, so as I grew up, it was a natural transition into Photoshop and lat…

Windows Mobile,用C#更改網絡連接(SSID、IP Address、Subnet Mask、Gatew... (轉)

前幾天在做一個改變PDA無線網絡連接的SSID和IP的功能是發現了一個好東西OpenNETCF Framework使用OpenNETCF.Net包,實現了任意改變PDA無線網絡連接的功能。并且不需要Reset PDA。現在正在做一個IP Manager For Windows Mobile的小程序。實現搜索當前網卡可見的SSID、…

一文讀懂vuex4源碼,原來provide/inject就是妙用了原型鏈?

1. 前言你好,我是若川,歡迎加我微信ruochuan12,加群長期交流學習。這是學習源碼整體架構系列 之 vuex4 源碼(第十篇)。學習源碼整體架構系列文章(有哪些必看的JS庫):jQuery、underscore、lodash、sentry、v…

Spring4.3x教程之一IOCDI

SpringIOC也稱為DI,對屬性內容的注入可以通過屬性的setXXX方法進行也可以通過構造方法進行,當然還可以使用工廠模式進行屬性內容的注入。 什么是DI?什么是IOC? DI:Dependency Injection依賴注入 其實一個類中的屬性就是…

戰神4 幕后花絮 概念藝術_幕后花絮:品牌更新的背后

戰神4 幕后花絮 概念藝術Under the Hood gives you an inside look at different parts of Waze — straight from the people working on them every day.在引擎蓋下,您可以深入了解Waze的不同部分-直接來自每天進行工作的人員。 Traffic is the worst. It makes …

C#日期控件(js版)

js 腳本代碼: <script type"text/javascript"> //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // 這是一個日歷 Javascript 頁…

python第三周測試_python第三周小測

1.讀取一個文件&#xff0c;顯示除了井號(#)開頭的行意外的所有行# -*- coding: utf-8 -*-"""Created on Tue May 28 09:37:08 2019author: Omega_Sendoh"""#打開文件f open("install-sh","r")#讀取文件的所有行&#xff0…

「Vueconf」探索 Vue3 中 的 JSX

大家好&#xff0c;我是若川。今天再分享 Vueconf 的一篇文章。另外 Vueconf 主辦方提供的錄播鏈接是&#xff1a;?https://www.bilibili.com/read/mobile?id11408693&#xff0c;感興趣可以復制觀看。點擊下方卡片關注我、加個星標。學習源碼整體架構系列、年度總結、JS基礎…

設計模式--享元模式實現C++

/********************************* *設計模式--享元模式實現 *C語言 *Author&#xff1a;WangYong *Blog:http://www.cnblogs.com/newwy ********************************/ #include <iostream> #include <cassert> #include <vector> #include <strin…

安卓加載asset中的json文件_Android解析Asset目錄下的json文件

在app module中的src/main/assets目錄下我們準備了兩個json文件&#xff1a;destination.json如下&#xff1a;{"main/tabs/sofa": {"isFragment": true,"asStarter": false,"needLogin": false,"pageUrl": "main/tabs…

一文搞懂 Promise、Genarator、 Async 三者的區別和聯系

非985/211大學畢業&#xff0c;軟件工程專業&#xff0c;前端&#xff0c;坐標&#xff1a;北京工作三年多&#xff0c;第一家人數 30 多人的創業公司&#xff0c;1 年多。第二家屬于前端技術不錯的公司&#xff0c;2 年多。01我是一個喜歡在技術領域“折騰”的人&#xff0c;技…

閉包,sync使用細節

代碼 先看代碼如下&#xff1a; func main() {var a []intfor i : 0; i < 100; i {go func() {a append(a, i)}()}time.Sleep(2 * time.Second)fmt.Println(a) } 這段測試代碼是想要一個元素為0到100的切片&#xff0c;但是這一小段代碼隱藏了很多的問題。 閉包函數 先看這…

dynamic 儀表板_儀表板完成百萬美元交易

dynamic 儀表板問題 (The Problem) Anybody dealing with tech products and data-focused services runs into the same fundamental problem: what you do is technical but non-technical people control the budget. In other words:任何處理高科技產品和以數據為中心的服務…

checkStyle -- 代碼風格一致

download page: http://sourceforge.net/project/showfiles.php?group_id80344&package_id107587 轉載于:https://www.cnblogs.com/xuqiang/archive/2010/10/26/1953431.html

在線VS Code閱讀源碼神器 github1s

大家好&#xff0c;我是若川。github1s大部分人知道了&#xff0c;但還是有一部分不知道。我在掘金發過沸點和知乎發過想法還是有挺多人不知道&#xff0c;所以再發公眾號推薦下。點擊下方卡片關注我、加個星標。學習源碼整體架構系列、年度總結、JS基礎系列近日&#xff0c;一…

lenze變頻器怎么更改地址_英威騰變頻器GD300維修

英威騰變頻器GD300維修英威騰變頻器GD300維修41. 問題&#xff1a;變頻器跟PLC采用485通訊不上答&#xff1a;1.檢查變頻器的通訊地址是否正確&#xff0c;如果采用通訊啟動&#xff0c;檢查P0.01是否為1&#xff0c;如果通過通訊設定頻率&#xff0c;檢查P0.068&#xff0c;P0…

代碼設計的基礎原則_設計原則:良好設計的基礎

代碼設計的基礎原則As designers, it’s our goal to pass information in the most pleasing way possible. Starting out, there’s a wealth of literature to read and videos to watch that can get quite overwhelming to take in at a glance. People take different ro…

SQL根據細粒度為天的查詢

當我們集成了一些前端框架&#xff0c;在某些展示頁面上往往具有某些查詢條件。而這其中日期查詢的處理又較為麻煩&#xff0c;此處&#xff0c;我羅列了一種當前臺上傳了一種默認的date格式的日期查詢數據至后臺未經Controller或Service層處理直接在SQL中處理的一種方式——即…

企業生產經營相關英文及縮寫之(11)--Genenic 普通書寫

Genenic 普通書寫 ASAP As soon as possible 盡早 BCC Blink Carbon Copy 無信頭抄送&#xff0c;無信頭副本 BR Best Regards 最誠致的問候 BTW By the way 順便問一下 CC Carbon Copy …

java金額類型_Java中存儲金額用什么數據類型?

很早之前, 記得一次面試, 面試官問存儲金錢用什么數據類型? 當時只知道8種數據類型(boolean, byte, short, int, long, float, double, char)的我, 回答了double, 因為我覺得double是雙精度類型, 最適合, 但是面試官告訴我應該用BigDecimal! 最近在做支付的項目, 才對這種數據…