35

用于构建API和微服务的流行JavaScript框架

 3 years ago
source link: http://developer.51cto.com/art/202011/630604.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

IbeQR3e.png!mobile

【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

IjQJNrJ.png!mobile

作为一种非常强大的JavaScript框架,Hapi通过最小的开销和各种开箱即用(out-of-box)的功能,来构建安全、鲁棒且可扩展的API。凭借着全球性的开发人员社区,Hapi框架拥有完善的插件系统和如下关键功能。

主要特征

  • 可实现缓存
  • 具备错误处理能力
  • 提供日志
  • 带有输入验证
  • 提供基于配置的功能

作为一种配置驱动的模式,Hapi具有在特定IP上创建服务器的独特能力。Paypal和Disney就在它们的应用中用到了Hapi的此类能力。

2. Express

nIBBVvy.png!mobile

由Node核心项目团队成员--TJ Holowaychuk构建的Express,是一个快速、且不受限制的简约式JavaScript框架。它可以为Web和移动应用程序提供一系列强大的功能。在庞大的开发人员社区的支持下,它的所有核心功能得到了不断更新与迭代。

Express支持各种程序包,以及诸如Pug、Mustache、EJS等模板引擎。Express的API能够充当HTTP服务器,通过配置路由,来实现在前端和数据库之间发送/接收各种请求。

3. Restify

jIFJvmB.png!mobile

该Web服务框架利用连接样式中间件(connect style middleware),来构建REST API。Restify对构建正确语义的RESTful Web服务进行了优化,可供生产环境直接使用。此外,进行了性能优化的Restify,还可以被用于一些大型Node.js的部署。

主要特征

  • 语义正确
  • 可调试
  • 面向生产环境

目前,用到Restify的知名公司包括:Netflix、Pinterest、Napster、以及npm等。

4. Sails

NFZbqyn.png!mobile

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

YBVRRrZ.png!mobile

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

zimUBzB.png!mobile

由Express的团队创建的NodeJS下一代Web框架--Koa,旨在为API和Web应用程序提供更具表现力、且功能更强大的基础架构。值得注意的是,Koa要求NodeJS的版本至少为0.11或更高。

主要特征

  • Koa能够提供那些从未出现在浏览器中的ECMAScript方法
  • 允许在不使用回调的情况下,大幅提高错误的处理能力
  • 提供了一套“优雅”的方法,来快速编写服务器端程序
  • 提供更多的自定义选项
  • 通过支持syn和await关键字,来管理各种代码

7. Total.js

VvMN3iN.png!mobile

Total.js是一个开放、稳定且免费的JavaScript框架,可用于构建快速、且功能强大的REST服务、网站和实时应用。TotalJS能够与Angular、Polymer、Backbone、Bootstrap、以及其他客户端JavaScript框架完全兼容。

值得一提的是,Total.js Eshop是一个针对移动设备,进行了用户界面优化的版本,所有高级会员都可以下载到该版本。

主要特征

  • 可扩展和异步
  • 易于使用
  • 支持数组和其他原型
  • 支持MVC架构

8. Feathers

7bUn6rY.png!mobile

Feathers是一个适用于实时应用和REST API的轻量级JavaScript框架。它可以在几分钟之内构建出原型,并让对应的应用程序能够在几天内投入生产环境。Feathers不但支持各种数据库,并且可以与诸如React、React-native、VueJS、Angular、Android或iOS等,许多前端技术一起使用。当然,它也可以与任何后端技术进行交互。

主要特征

  • 提供灵活的插件
  • 具有服务优先的原则
  • 支持不可预知的数据存储(Datastore agnostic)
  • 提供实时的REST API
  • 具有通用性

9. Fastify

m2YVV3E.png!mobile

顾名思义,Fastify是一种极快的Web框架。它高度专注于以最少的开销和强大的插件架构,为开发人员提供最佳的使用体验。由于受到了Hapi和Express框架的极大启发,Fastify以其高效的服务器,不但提供了较低的架构成本,而且能够交付让用户满意的、更好的负载响应能力。

核心功能

  • 提供基于模式(Schema-based)的支持
  • 具有可扩展性
  • 对开发人员友好
  • 提供日志
  • 对TypeScript(是JavaScript的一个超集)友好
  • 具有高性能

10. Actionhero

ieEB7zJ.png!mobile

由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

bqmU7vN.png!mobile

Spring Boot可以方便用户创建独立运行的、基于Spring的应用程序。它们能够独立于不同的语言,实现各种反转控制和面向切面(aspect-oriented)的编程。

主要特征

  • 可创建独立的Spring应用程序
  • 能直接嵌入Tomcat、Jetty或Undertow中(但不部署WAR文件)
  • 提供入门级的依赖项,以简化构建的配置
  • 提供各项运行状况检查、指标和外部配置等面向生产环境的功能
  • 无需XML配置
  • 无需代码生成

2. Dropwizard

BJn22m2.png!mobile

Dropwizard能够让用户构建操作友好且高性能的RESTful Web服务。用户能够通过该框架提供的稳定且成熟的Java库,来轻松地整合到各种轻量级的程序包中。

主要特征

  • 提供对复杂配置的、开箱即用式的支持
  • 提供各种操作工具
  • 提供日志记录
  • 提供各种指标

总的说来,Dropwizard能够让用户在最短的时间内,交付出具有产品级质量的Web服务。

3. Spark

RZ7bAv2.png!mobile

作为一种微服务框架,Spark可以让用户用最少的精力,用Kotlin和Java 8快速地构建Web应用。通过流畅的、具有声明性和表达性的语法,Spark不但提高了代码的生产力,还能让用户充分利用到JVM。

目前,用到Spark的知名公司包括:Asana、Gosu、Apache、以及Playlyfe等。

4. Restlet

VFRJbq.png!mobile

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】

【责任编辑:庞桂玉 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK