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