用于構(gòu)建API和微服務(wù)的流行JavaScript框架
譯文【51CTO.com快譯】近年來,隨著jQuery、JSON(JavaScript的對象表示法)、MongoDB、ES6 Generators的廣泛使用,JavaScript發(fā)展出了許多易于使用、并能與多種編程語言相集成的框架、庫和工具。其中包括:NodeJS、Angular、React、Vue、Meteor、Google Polymer、Mercury、以及Backbone等。而作為后端開發(fā)人員中最常用的編程語言,JavaScript通過如下優(yōu)勢,為軟件開發(fā)人員節(jié)省了大量的資源和時間:
1.客戶端處理能力
2.易于學(xué)習(xí)的語法
3.簡單且易于實(shí)現(xiàn)
4.易于調(diào)試和測試
5.能夠快速執(zhí)行
6.易于擴(kuò)展到網(wǎng)頁上
7.帶有內(nèi)置JavaScript的瀏覽器
8.提供基于事件的編程
9.提供動態(tài)內(nèi)容
基于上述優(yōu)勢,根據(jù)GitHub(擁有全球數(shù)百萬開發(fā)用戶的最大存儲庫)的統(tǒng)計,JavaScript是產(chǎn)生打開和拉取請求(即:編寫的代碼量)數(shù)量最多的編程語言。
下面,我們將討論那些用于構(gòu)建API和微服務(wù)的JavaScript流行框架。注意,這里說的API是一種通信模式,而微服務(wù)則是一種架構(gòu)模式。我們應(yīng)當(dāng)區(qū)別對待。
用于構(gòu)建API的十大流行JavaScript框架
1.Hapi
作為一種非常強(qiáng)大的JavaScript框架,Hapi通過最小的開銷和各種開箱即用(out-of-box)的功能,來構(gòu)建安全、魯棒且可擴(kuò)展的API。憑借著全球性的開發(fā)人員社區(qū),Hapi框架擁有完善的插件系統(tǒng)和如下關(guān)鍵功能。
主要特征
- 可實(shí)現(xiàn)緩存
- 具備錯誤處理能力
- 提供日志
- 帶有輸入驗證
- 提供基于配置的功能
作為一種配置驅(qū)動的模式,Hapi具有在特定IP上創(chuàng)建服務(wù)器的獨(dú)特能力。Paypal和Disney就在它們的應(yīng)用中用到了Hapi的此類能力。
2. Express
由Node核心項目團(tuán)隊成員--TJ Holowaychuk構(gòu)建的Express,是一個快速、且不受限制的簡約式JavaScript框架。它可以為Web和移動應(yīng)用程序提供一系列強(qiáng)大的功能。在龐大的開發(fā)人員社區(qū)的支持下,它的所有核心功能得到了不斷更新與迭代。
Express支持各種程序包,以及諸如Pug、Mustache、EJS等模板引擎。Express的API能夠充當(dāng)HTTP服務(wù)器,通過配置路由,來實(shí)現(xiàn)在前端和數(shù)據(jù)庫之間發(fā)送/接收各種請求。
3. Restify
該Web服務(wù)框架利用連接樣式中間件(connect style middleware),來構(gòu)建REST API。Restify對構(gòu)建正確語義的RESTful Web服務(wù)進(jìn)行了優(yōu)化,可供生產(chǎn)環(huán)境直接使用。此外,進(jìn)行了性能優(yōu)化的Restify,還可以被用于一些大型Node.js的部署。
主要特征
- 語義正確
- 可調(diào)試
- 面向生產(chǎn)環(huán)境
目前,用到Restify的知名公司包括:Netflix、Pinterest、Napster、以及npm等。
4. Sails
Sails框架以使用可擴(kuò)展性的、面向服務(wù)的架構(gòu),來構(gòu)建數(shù)據(jù)驅(qū)動型API而聞名。它與大家熟悉的Ruby on Rails等MVC模式框架非常類似。Sails可以在幾周內(nèi)為您構(gòu)建出實(shí)用的、可用于生產(chǎn)環(huán)境的Node應(yīng)用程序。
用戶可以通過Sails提供的數(shù)據(jù)驅(qū)動式API,來開發(fā)聊天應(yīng)用、儀表板、以及多人游戲等軟件。同時,Sails能夠使用Express來處理Node上的HTTP請求,并使用waterline進(jìn)行各種與對象相關(guān)(object-related)的數(shù)據(jù)庫映射。
主要特征
- 自動生成的REST API
- 適用于任何數(shù)據(jù)庫
- 前端透明
- 可輕松地集成Web套接字
- 提供專業(yè)的支持
- 完全由JavaScript編寫
目前,用到Sails的知名公司包括:Microsoft、WikiJobs、Philips、DXL、Scout、MOBOOM、以及broadsoft等。
5. Loopback
Loopback是一種用于構(gòu)建API和微服務(wù)的高度可擴(kuò)展性JavaScript(包括Node和TypeScript)框架。它允許用戶創(chuàng)建出能夠與任何類型Web客戶端協(xié)同的,并可以輕松地橋接到后端資源的API。
作為一種開放源代碼的框架,Loopback允許那些具有最少或幾乎沒有編程背景的用戶創(chuàng)建動態(tài)的REST API。由于默認(rèn)使用的是widget-API資源管理器,因此它也能協(xié)助創(chuàng)建SDK和API文檔。
主要特征
- 提供由OpenAPI Spec驅(qū)動的REST API
- 具有高度可擴(kuò)展性
- 對GraphQL支持
- 支持Swagger(一種Rest API)
- 提供更好的用戶管理策略
- 提供第三方登錄和存儲服務(wù)
- 提供模型關(guān)系支持(Model-relation-support)
6. Koa
由Express的團(tuán)隊創(chuàng)建的NodeJS下一代Web框架--Koa,旨在為API和Web應(yīng)用程序提供更具表現(xiàn)力、且功能更強(qiáng)大的基礎(chǔ)架構(gòu)。值得注意的是,Koa要求NodeJS的版本至少為0.11或更高。
主要特征
- Koa能夠提供那些從未出現(xiàn)在瀏覽器中的ECMAScript方法
- 允許在不使用回調(diào)的情況下,大幅提高錯誤的處理能力
- 提供了一套“優(yōu)雅”的方法,來快速編寫服務(wù)器端程序
- 提供更多的自定義選項
- 通過支持syn和await關(guān)鍵字,來管理各種代碼
7. Total.js
Total.js是一個開放、穩(wěn)定且免費(fèi)的JavaScript框架,可用于構(gòu)建快速、且功能強(qiáng)大的REST服務(wù)、網(wǎng)站和實(shí)時應(yīng)用。TotalJS能夠與Angular、Polymer、Backbone、Bootstrap、以及其他客戶端JavaScript框架完全兼容。
值得一提的是,Total.js Eshop是一個針對移動設(shè)備,進(jìn)行了用戶界面優(yōu)化的版本,所有高級會員都可以下載到該版本。
主要特征
- 可擴(kuò)展和異步
- 易于使用
- 支持?jǐn)?shù)組和其他原型
- 支持MVC架構(gòu)
8. Feathers
Feathers是一個適用于實(shí)時應(yīng)用和REST API的輕量級JavaScript框架。它可以在幾分鐘之內(nèi)構(gòu)建出原型,并讓對應(yīng)的應(yīng)用程序能夠在幾天內(nèi)投入生產(chǎn)環(huán)境。Feathers不但支持各種數(shù)據(jù)庫,并且可以與諸如React、React-native、VueJS、Angular、Android或iOS等,許多前端技術(shù)一起使用。當(dāng)然,它也可以與任何后端技術(shù)進(jìn)行交互。
主要特征
- 提供靈活的插件
- 具有服務(wù)優(yōu)先的原則
- 支持不可預(yù)知的數(shù)據(jù)存儲(Datastore agnostic)
- 提供實(shí)時的REST API
- 具有通用性
9. Fastify
顧名思義,F(xiàn)astify是一種極快的Web框架。它高度專注于以最少的開銷和強(qiáng)大的插件架構(gòu),為開發(fā)人員提供最佳的使用體驗。由于受到了Hapi和Express框架的極大啟發(fā),F(xiàn)astify以其高效的服務(wù)器,不但提供了較低的架構(gòu)成本,而且能夠交付讓用戶滿意的、更好的負(fù)載響應(yīng)能力。
核心功能
- 提供基于模式(Schema-based)的支持
- 具有可擴(kuò)展性
- 對開發(fā)人員友好
- 提供日志
- 對TypeScript(是JavaScript的一個超集)友好
- 具有高性能
10. Actionhero
由Typescript編寫的Actionhero是一種可重用、可擴(kuò)展且快速的NodeJS API服務(wù)器。它適用于在Linux、OS X和Windows上運(yùn)行的、無狀態(tài)和有狀態(tài)的應(yīng)用程序。該框架通過入門級的REST API方法,提供了各種快速的路由、版本控制、測試、以及翻譯工具。
主要特征
- 易于使用
- 內(nèi)置各項任務(wù)
- 面向集群
- 提供路由
- 支持本地化
目前,用到Actionhero的知名公司包括:Samsung、TaskRabbit、以及madglory等。
用于構(gòu)建微服務(wù)的四大流行JavaScript框架
在微服務(wù)框架支持的情況下,JavaScript的注釋語法(Annotation Syntax)功能、及其可讀性,對于Java微服務(wù)的開發(fā)非常實(shí)用??偟恼f來,Java通過提供以下功能來支持微服務(wù)的開發(fā)和部署:
- 用戶界面
- 各種模型組件
- 與后端資源的連接
此外,如下Java EE標(biāo)準(zhǔn)也適用于微服務(wù)應(yīng)用:
- 針對API的JAX-RS
- 用于數(shù)據(jù)處理的JPA
- 用于依賴項注入和生命周期管理的CDI
下面我們來討論一些可以簡化微服務(wù)架構(gòu)開發(fā)的流行Java框架。
1. Spring Boot
Spring Boot可以方便用戶創(chuàng)建獨(dú)立運(yùn)行的、基于Spring的應(yīng)用程序。它們能夠獨(dú)立于不同的語言,實(shí)現(xiàn)各種反轉(zhuǎn)控制和面向切面(aspect-oriented)的編程。
主要特征
- 可創(chuàng)建獨(dú)立的Spring應(yīng)用程序
- 能直接嵌入Tomcat、Jetty或Undertow中(但不部署WAR文件)
- 提供入門級的依賴項,以簡化構(gòu)建的配置
- 提供各項運(yùn)行狀況檢查、指標(biāo)和外部配置等面向生產(chǎn)環(huán)境的功能
- 無需XML配置
- 無需代碼生成
2. Dropwizard
Dropwizard能夠讓用戶構(gòu)建操作友好且高性能的RESTful Web服務(wù)。用戶能夠通過該框架提供的穩(wěn)定且成熟的Java庫,來輕松地整合到各種輕量級的程序包中。
主要特征
- 提供對復(fù)雜配置的、開箱即用式的支持
- 提供各種操作工具
- 提供日志記錄
- 提供各種指標(biāo)
總的說來,Dropwizard能夠讓用戶在最短的時間內(nèi),交付出具有產(chǎn)品級質(zhì)量的Web服務(wù)。
3. Spark
作為一種微服務(wù)框架,Spark可以讓用戶用最少的精力,用Kotlin和Java 8快速地構(gòu)建Web應(yīng)用。通過流暢的、具有聲明性和表達(dá)性的語法,Spark不但提高了代碼的生產(chǎn)力,還能讓用戶充分利用到JVM。
目前,用到Spark的知名公司包括:Asana、Gosu、Apache、以及Playlyfe等。
4. Restlet
Restlet能為大量Java開發(fā)人員提供支持,以便他們構(gòu)建出更好的Web API。用戶可以根據(jù)Apache軟件許可準(zhǔn)則的相關(guān)條款,免費(fèi)下載和使用這款完全開源的框架。
主要特征
- 原生的REST支持
- 提供廣泛的用例支持
- 提供靈活的配置
- 安全且可擴(kuò)展
- 提供完整的網(wǎng)絡(luò)服務(wù)器
- 具有各種可用的表示形式
- 提供廣泛的連接器組
除了上述介紹到的各種架構(gòu),以Netflix Eureka、Consul或Amalgam8為代表的服務(wù)發(fā)現(xiàn)解決方案,也能夠提供與Java微服務(wù)的輕松連接。
小結(jié)
上述JavaScript框架的列表,便是我根據(jù)JavaScript社區(qū)中的使用率和普遍性的綜合排名,收集到的用于構(gòu)建API和微服務(wù)的各種流行框架。您具體應(yīng)該采用哪一種框架,還是取決于計劃構(gòu)建的實(shí)際應(yīng)用類型。
原文標(biāo)題:Popular JavaScript Frameworks to Build API and Microservices,作者: Kanchan Sharma
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】