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.mzph.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基础…

安卓加载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;技…

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…

java金额类型_Java中存储金额用什么数据类型?

很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long, float, double, char)的我, 回答了double, 因为我觉得double是双精度类型, 最适合, 但是面试官告诉我应该用BigDecimal! 最近在做支付的项目, 才对这种数据…

React Hooks 不知道怎么学?看这篇

大家好&#xff0c;我是若川。最近跟朋友聊技术&#xff0c;发现越来越多的大厂&#xff0c;都优先考虑用 React 做项目&#xff0c;在面试中也经常会考察对 React Hooks 的理解。其实&#xff0c;我一直觉得&#xff0c;React 才是前端的正确打开方式。当然&#xff0c;并不是…

ui原型设计工具_UI设计师的工具包,用于专业模型,原型和产品插图

ui原型设计工具This is a followup to my previous article 这是我上一篇文章的后续 visual tools for UX Designers视觉工具Tools don’t make designs better– you do! It doesn’t matter if you paid a lot of money for the latest software, or if you simply have a p…

前端 Offer 提速:如何写出有亮点的简历

大家好&#xff0c;我是若川。今天推荐一篇8年工作经验字节大佬的文章&#xff0c;如何写出有亮点的简历。可以收藏常看。点击下方卡片关注我、加个星标。学习源码整体架构系列、年度总结、JS基础系列先来个灵魂拷问&#xff1a;「你与他人相比&#xff0c;有什么能形成明显区分…

2008中的membership profile操作(转)

<profile > <properties> <add name"jimmy" /> </< span>properties> </< span>profile> 然后就那么简单,后台就能通过Profile拿到: Profile.jimmy "Pumpkin Ravioli"; 然后~通过这种方式就跟Session一样&a…