如何为你的下一个Node.js应用程序选择合适的框架。
如果您决定在下一个项目中使用 Meteor,请阅读以下文章。
如果您决定在下一个项目中使用 Meteor,请阅读本文。
如何为你的下一个Node.js应用程序选择合适的框架。
选择适合自己需求的框架是开展任何工作之前最重要的事情之一,Express 是一个不错的选择,但也有一些替代方案可以更好地满足你的需求。
什么是Web框架:
Web框架或Web应用程序框架是一种软件框架,旨在支持Web应用程序的开发,包括Web服务、Web资源和Web API。Web框架提供了一种在万维网上构建和部署Web应用程序的标准方法。
你可以把 Web 框架看作是一个工具,它可以帮助你以良好的方式构建应用程序,使其功能齐全、安全快速。
市面上有很多 Web 框架,尤其是 Node.js 框架。那么问题来了,哪个 Web 框架最好?以及如何选择最适合自己需求的框架?
在本文中,我将尝试回答这些问题,但最终由您来决定哪个框架最好、哪个框架最适合您。我在这里只是想简单简要地介绍每个流行的框架及其优缺点,并在文章末尾添加了一些链接,对这些框架进行比较,以便您可以选择适合自己的框架。
如何为你的应用选择合适的框架:
-
这个应用的用途是什么?是想向公众开放的API吗?是可靠性和性能至关重要的电商应用吗?是需要转换成移动应用的全栈解决方案吗?您的项目是小型、中型还是企业级?
-
始终选择易于安装和使用且拥有最广泛社区支持的框架。
-
你的应用需要具备可扩展性吗?你会经常添加更多功能吗?
-
您有很多时间学习新的框架吗?还是想尽快上手?
-
始终选择文档更完善的版本,这样可以减少遇到的问题,并将更多时间用于应用开发。
-
框架的托管要求是什么?
请使用符合您正在开发的应用程序托管要求的框架。有些框架仅适用于共享主机方案。 -
尽量避免使用复杂难懂的框架,除非你需要它带来的其他好处。
-
创建扩展的便捷性和可用性
别光说不练,开始干活吧!
表达:
Express.js,简称 Express,是一个用于使用 Node.js 构建 RESTful API 的后端 Web 应用程序框架,以 MIT 许可证发布,属于免费开源软件。它专为构建 Web 应用程序和 API 而设计,被誉为 Node.js 的事实标准服务器框架。Express
- Node.js Web 应用程序框架
*Express 是一个简洁灵活的 Node.js Web 应用程序框架,为 Web 和 API 提供了一套强大的功能集……*expressjs.com
优点:
-
很棒的社区。
-
对众多第三方插件提供强大的支持
-
不持立场(这既是优点也是缺点)
-
简单而强大的 root API
-
内容详尽且详尽的文档
-
对中间件模式有很好的支持
缺点:
-
由于其结构缺乏统一标准,因此缺乏标准化。
-
回调地狱
使用 Express.js 的公司:
-
优步
-
叽叽喳喳
-
PayPal
-
IMDb
-
Netflix
寇亚:
Koa 是由 Express 团队设计的全新 Web 框架,旨在为 Web 应用程序和 API 提供更小巧、更具表现力且更强大的基础架构。通过利用异步函数,Koa 允许您摆脱回调,并大幅提升错误处理能力。Koa 的核心不包含任何中间件,它提供了一套优雅的方法,使服务器的编写变得快速而轻松。Koa网站
- 下一代 Node.js Web 框架
*Koa Request 对象是对 Node.js 原生请求对象的抽象,提供了额外的功能……*koajs.com
优点:
-
轻的
-
从底层开始提供发电机支持
-
没有回调地狱
-
例如,采用模块化结构,而不是将主体解析器作为中间件,而是将其作为一个函数。
-
使用 try-catch 实现更强大的错误处理能力
缺点:
-
这个社区相对较小。
-
与中间件风格不兼容
-
Koa 使用的生成器与任何其他类型的 Node.js 框架中间件都不兼容。
使用 Koa.js 的公司:
-
脑中心
-
电灯泡
-
加波
-
码头
哈皮:
Hapi.js(源自 Http-API)是一个开源的 Node.js 框架,用于构建功能强大且可扩展的 Web 应用程序。Hapi 通常用于构建应用程序编程接口 (API) 服务器、HTTP 代理应用程序和网站。Hapi.js 由沃尔玛实验室的移动团队创建,该团队由 Eran Hammer 领导,旨在处理诸如“黑色星期五”等活动的流量。“黑色星期五”是美国在线购物最繁忙的日子之一。Hapi 最初使用 Express 框架构建,但在遇到一些挑战后,沃尔玛决定将其开发为独立的框架。
优点:
-
强大的插件
-
安全框架
-
微服务支持
-
集成授权
-
易于编码
缺点:
-
代码配置方面,开发者必须在没有社区支持的情况下自行摸索代码结构。
-
与其他框架(例如 Express)的兼容性问题
-
由于缺乏自动化,只能进行手动测试。
使用 Hapi.js 的公司:
-
技术栈
-
光束
-
GraphicWeave
-
猫头鹰
Fastify:
Fastify 是一个专注于以最小的开销和强大的插件架构提供最佳开发者体验的 Web 框架。它借鉴了 Hapi 和 Express 的理念,据我们所知,它是目前速度最快的 Web 框架之一。**来源**
优点:
-
性能卓越:据我们所知,Fastify 是目前速度最快的 Web 框架之一,根据代码复杂度的不同,我们每秒最多可以处理 3 万个请求。
-
可扩展性: Fastify 可通过其钩子、插件和装饰器进行完全扩展。
-
基于模式:即使这不是强制性的,我们也建议使用JSON Schema来验证您的路由并序列化您的输出,Fastify 内部会以高性能函数编译模式。
-
伐木:原木非常重要,但成本很高;我们选择了最好的伐木工皮诺,几乎消除了这笔成本!
-
对开发者友好:该框架的设计旨在提供强大的表达能力,帮助开发者进行日常使用,同时又不牺牲性能和安全性。
-
TypeScript 就绪:我们努力维护TypeScript类型声明文件,以便支持不断壮大的 TypeScript 社区。
缺点:
-
目前在业内尚未广泛应用。
-
相关资料较少。
-
社区对调试的支持较少。
使用 Fastify.js 的公司:
-
阿穆特
-
bee10
-
支付
-
七信使
-
研发
巢:
Nest 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它采用渐进式 JavaScript,基于 TypeScript 构建(同时保持与纯 JavaScript 的兼容性),并融合了面向对象编程 (OOP)、函数式编程 (FP) 和函数式响应式编程 (FRP) 的元素。Nest 底层使用 Express,同时也兼容众多其他库,例如 Fastify,从而可以轻松使用各种第三方插件。
优点:
-
基于 TypeScript
-
易于编写的简单 API
-
用于生成和集成样板代码的命令行工具。
-
模块化结构
-
允许您创建可扩展的软件解决方案,其中组件之间没有强耦合。
缺点:
-
**深受 Angular 启发,**如果你不擅长 Angular 或者至少不熟悉 TypeScript,可能会觉得难以上手。
-
过于晦涩难懂。ExpressJS(或 Fastify)本身就相当易于使用和理解,而 NestJS 却矫枉过正,迫使你更多地了解 NestJS 的需求,而不是其底层工作原理。
-
魔法太多了。类似于混淆技术,魔法意味着事情一开始就能正常运行……直到突然失效。我们曾多次遇到需要与 NestJS 对抗或合作才能满足需求的情况,而这些需求通常使用 ExpressJS 之类的框架就能轻松实现。
-
与其他语言的框架(例如 Java 中的 Spring 或 C# 中的 .NET)相比,功能有所欠缺。
使用 Nest.js 的公司:
-
做它
-
凯文
-
点击后
-
UniBuddy
-
产品板
如果您决定在下一个项目中使用 Meteor,请阅读以下文章。
我们使用 NestJS 的经验
*NestJS 是一个具有鲜明风格的框架,用于构建“可扩展的服务器端应用程序”。它深受 Angular 的启发……*www.wwt.com
NestJS - Davidson
*JavaScript 企业版 (JsEE)?几分钟后,您将离不开 NestJS。它于 2017 年发布……*www.davidson.group
余烬
Ember.js 是一个面向雄心勃勃的 Web 开发者的框架
。
它是一个高效且久经考验的 JavaScript 框架,用于构建现代 Web 应用程序。它包含了构建可在任何设备上流畅运行的丰富用户界面所需的一切。Ember.js网站
- 面向雄心勃勃的 Web 开发者的框架
*世界上一些顶尖的开发团队多年来一直使用 Ember 来迭代他们的产品。*emberjs.com
优点:
-
稳定
-
社区
-
约定优于配置
-
Ember CLI
-
Ember Octane——当代 Ember 的未来。Ember团队计划每年发布一个新版本。每个版本都会围绕一个特定主题展开——Ember Octane 就是其中之一,它与性能和生产力息息相关。据官网介绍,Ember Octane 致力于以更少的资源实现更高的性能,这意味着 Ember 将更容易学习,框架也将更加精简高效。Ember Octane 将引入原生 JavaScript 类、增量渲染、摇树优化、水合重构等技术。
缺点:
-
不容易学
-
**观点鲜明**,鉴于任何偏离既定做法的做法都可能导致令人沮丧的问题。
-
人气增长缓慢
使用 Ember.js 的公司:
-
抽搐
-
领英
-
数字大洋洲
-
更好的
-
正方形
骨干
Backbone.js 通过提供具有键值绑定和自定义事件的模型、具有丰富的可枚举函数 API 的集合、具有声明式事件处理的视图,为 Web 应用程序构建结构,并通过 RESTful JSON 接口将所有这些连接到您现有的API。backbone.js网站 *Backbone.js 通过提供具有键值绑定和自定义事件的模型为 Web 应用程序构建结构……*backbonejs.org
优点:
-
简单灵活
-
庞大的社区和生态系统
-
强大的继承模型
-
MV结构和抽象代码
-
事件驱动型沟通
-
编码风格规范
缺点:
-
由于 Backbone 本身并没有明确的架构理念,其架构有时显得不够清晰,这使得用户难以快速掌握某些功能。
它并非提供一个现成的结构,而是提供了一些创建结构的基本工具。 -
生产力方面,由于 Backbone 更像是一个库,这意味着它不会过多地强加自己的观点,但也意味着它不会像其他框架那样为你提供太多帮助,也不会为你编写那么多代码。
这并不是说使用 Backbone 就无法提高生产力,而是说你肯定需要编写更多的代码。造成这种情况的一个重要原因是 Backbone 缺少双向数据绑定,而双向数据绑定正是 Angular 和 Ember 吸引众多开发者的主要特性之一。 -
内存泄漏: Backbone 最大的缺点在于,它提供的不是结构本身,而是一些用于创建架构的基本工具。因此,在某种程度上,你需要依赖开发人员来决定应用程序的结构。
使用Backbone.js的公司:
-
优步
-
LinkedIn
-
Reddit
-
Pinterest
-
Coursera
-
万事达
-
沃尔玛
流星:
Meteor 是一个全栈 JavaScript 平台,用于开发现代 Web 和移动应用程序。Meteor 包含一套用于构建互联客户端响应式应用程序的关键技术、一个构建工具以及来自 Node.js 和通用 JavaScript 社区的精选软件包。
优点:
-
全栈 JavaScript 框架
-
响应式设计意味着数据库的更改会立即发送到客户端,这要归功于 socket.io。简而言之,如果有人在你的文章下发表评论,你可以立即看到该评论,而无需重新加载页面。
这意味着数据库中的任何数据更改都会立即反映在用户屏幕上的相应更改上。
-
使用一种语言开发整个平台
-
借助 Cordova ,将您的 Meteor JS 应用转换为 Android 和 iOS 应用。
-
支持性强且积极的社区
缺点:
-
开发人员过度依赖各种预编译软件包,这可能会导致冲突。
-
如果你只是在开发一个Web应用程序,那么使用Express或其他任何Web框架可能会更容易。
-
一种不太明显的部署到自有服务器的方法
-
不支持原生服务器端渲染(不利于搜索引擎优化)
使用 Meteor.js 的公司:
我的个人观点:
对于创建开放 API 或后端应用程序/服务器,我会选择 Express,因为它提供了简单性、安全性、速度、易于开发,最重要的是它支持中间件,而我经常使用中间件。
但如果我要开发一个需要跨平台的全栈应用,那么 Meteor 绝对是首选。你甚至可以用 Meteor 从同一个应用创建 iOS 和 Android 应用版本。我以前用过 Meteor,感觉很棒,虽然它也有一些烦人的缺点,但仍然是一个不错的选择。
偏好设置:
https://www.slant.co/options/1277/alternatives/~express-js-alternatives
2022 年顶级 Node.js Web 应用框架
*2022 年 6 款最佳 Node.js Web 应用框架*javascript.plainenglish.io
2022 年 12 个最佳 Node.js 应用开发框架
*本文将为您介绍 2022 年适用于 Web 和移动应用的最佳 Node.js 框架。深入了解详情……*www.simform.com
2022 年顶级 NodeJS 框架
*Node.js 是一种领先的软件开发技术,拥有丰富的框架。这些框架包含……*www.clickittech.com
最佳 Node.js 框架:Koa VS Express VS Hapi [对比]
*自 2009 年发布以来,Node.js 已成为增长最快的开源、跨平台 JavaScript 运行时之一……*savvycomsoftware.com
Express vs. Hapi:谁才是最佳 Node.js 框架
?*Express 和 Hapi 都以 Node.js 为核心,因此选择哪一个就成了一个难题……*www.simform.com
感谢阅读,如果您对 JavaScript 或本系列文章有任何疑问,请随时提出。我非常感谢您的任何反馈,这有助于我改进内容。
文章来源:https://dev.to/osam1010/how-to-choose-the-right-framework-for-your-next-nodejs-app-2c1e
](/upload/0-kqxm.png)







