node.js基于JavaScript语言,不在单用学习一门新的语言,从而降低了陌生语言的门槛,同时js语言在web前端开发至关重要,特别HTML5必须使用,前后台语言统一,不仅可以实现程序员全栈开发还可以统一公共类库,使得代码标准化。
nodejs没有重新开发运行环境,而是选择了内核V8引擎为执行引擎,保证nodejs的性能和稳定性,nodejs也有很好的技术交流平台使得更好的版本迭代和维护。
Node.js 使用由 Google 开发的 V8 引擎,它可以将 JavaScript 编译成原生机器码并快速执行。由于 Node.js 使用事件驱动的非阻塞 I/O 模型,因此对于内存使用和数据密集的实时 Web 应用十分高效和轻便,可在多个设备上工作。
使用 Node.js,可以非常快速地执行常见的 Web 应用任务,例如读取或写入数据库,读取或写入网络连接,以及读取或写入文件系统。Node.js 对于希望构建快速、强大的 Web 应用的开发人员来说是一个福音,它可以有效地处理并行连接并增加吞吐量。Node.js,开发人员可以自动发送和同步服务器端和客户端之间的数据,因为它允许开发人员为服务器和客户端编写 JavaScript 代码。Meteor 是在 Node.js 之上创建的 Web 应用框架,为客户端和服务器端提供了相同代码库的支持。服务器上任何的数据更改都会在客户端立即显示。
“Node.js 不是一个支配 Web 开发世界的新平台。相反,它是一个满足特定需求的平台”,根据 Web 工程公司 Toptal 的说法,Node.js 真正的亮点在于构建快速的、可扩展的网络应用。
Node.js 还有着非常有好的社区。因为拥有开源社区,Node.js 提供了许多出色的模块,可为 Web 应用增加更多优秀的功能。例如,http://Socket.io 可用于处理客户端和服务器之间的恒定通信,从而使服务器可向客户端发送实时更新。Express.js, Koa.js, Hapi.js, Sails.js, Meteor 和 Derby 是由 Node.js 社区开发的一些其他顶级框架,用于加速应用开发过程。
IoT 社区也欢迎将 Node.js 用于嵌入式设备和机器人,如 Cylon 和 Nodebots。此外,它已经成为实时 Web APP 开发世界的巨人。上面提到有关 Node.js 的所有优点是许多公司认为 Node.js 是运行重负载 Web 应用的很好的技术,并允许团队将其用于生产环境的原因。
对于数据库查询,Node.js 有一个优势,因为 JavaScript 可用于为 MongoDB,CouchDB 等新的 NoSQL 数据库编写数据库查询。对于开发者来说,这是一个很大的缓解,因为他们在执行组合 Node.js 和 NoSQL 数据库的任务时不需要记住语法差异。由于 JSON 存储的数据格式允许平滑运行,在数据转换或不匹配中没有任何障碍。因此 Node.js 对于实时 Web 应用来说确实是一个福音。Node.js 具有动态工具和模块的动态存储库,程序员可以使用它们共享应用开发。Node.js 可以通过框架,模板系统以及与访问者的实时通信管理等使用成千上万个模块用于各种任务,如文件上传管理,连接到 MySQL 数据库或 Redis。
对于需要重新使用外部 JavaScript 开发者创建的代码来解决某个特定的问题的程序员来说,Node.js 的包管理器或 NPM 是他们的救星。NPM 还允许 JavaScript 开发者下载针对以前在其应用中使用的特定代码所做的更新。即使不想重用组织外的 JavaScript 开发者创建的代码,也可以采用基于模块的方式来改进团队成员之间的协同效应。使用 NPM 后,PayPal 显著提高了开发者的生产力。此外,互联网支付巨头不需要太多的开发者来构建一个应用,就像使用 Node.js 之前一样。
最后再为大家列举下在GitHub上star排名前10的Node.js 后端框架:
目前star 和下载量最高的老牌框架。Express 是一款基于Node.js以及Chrome V8引擎,快速、极简的JS服务端开发框架,它提供了用来开发强壮的 Web/移动应用,以及 API 的所有功能。并且开发人员还能够方便地为它开发插件和扩展,从而增加 Express 的能力。
https://github.com/expressjs/expressgithub.com
Meteor是一个基于nodejs和mongodb数据库的实时web框架。你可以用js搞定客户端、服务端的开发。另外,客户端、服务端的界限被极大的模糊。客户端的界面跟服务端的数据是双向绑定的,修改服务端的数据,用户界面会随着更新;你也可以在客户端直接修改服务端的数据库。
meteor/meteorgithub.com
作为目前上榜框架中发布最晚,也是star 最高且增长最快的 typescript 后端框架。Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程 ),FP(函数式编程)和 FRP(函数式响应编程)的元素。
Nest 框架底层 HTTP 平台默认是基于 Express 实现的,所以无需担心第三方库的缺失。 Nest 旨在成为一个与平台无关的框架。 通过平台,可以创建可重用的逻辑部件,开发人员可以利用这些部件来跨越多种不同类型的应用程序。 从技术上讲,Nest 可以在创建适配器后使用任何 Node HTTP 框架。 Nest 提供了一个开箱即用的应用程序架构,允许开发人员和团队创建高度可测试,可扩展,松散耦合且易于维护的应用程序。
https://github.com/nestjs/nestgithub.com
Nest.js 中文文档docs.nestjs.cn
Koa框架由Express原班人马打造,它的核心是 ES6 的 Generator。Koa 使用 Generator 来实现中间件的流程控制,使用try/catch 来增强异常处理,同时在 Koa 框架中你再也看不到复杂的 callback 回调了。Koa框架本身非常小,只打包了一些必要的功能,但是它本身通过良好的模块化 组织,让开发人员可以按照自己的想法来实现一个扩展性 非常好的应用。
https://github.com/koajs/koagithub.com
Sails 作为一个非常稳固的 Node.js 框架,提供了建立任何规模的 Web 应用所需要的所有功能。
Sails.js 在底层使用了 Express框架来提供对 HTTP 请求的处理,同时使用 http://Socket.IO 框架来处理WebSocket 请求。同时作为一个前端应用开发框架,它允许开发人员选择他/她熟悉的技术来开发应用。
同时 Sails.js 也通过 waterline 框架实现了 ORM 功能。通过这个功能,你的应用程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外一个后端数据库(也可以是一个NoSQL数据库)。
Sails 特别适合用来开发对数据的实时更新有较高要求的应用,比如多人棋类游戏,单页Web应用等等。如果你对 Ruby, Django 或者 Zend 有一定的了解,那么你将非常容易理解Sail中的概念。
https://github.com/balderdashy/sailsgithub.com
Egg是基于Koa,由阿里Node.js团队封装的企业级Web应用解决方案,以约束和规范化团队开发,帮助开发团队和开发人员降低开发和维护成本为核心设计理念的优秀解决方案。Egg已经被用在阿里多条产品线(包括蚂蚁)上,已经证明它的安全和可靠性,可以放心用。
https://github.com/eggjs/egggithub.com
目前性能最好的 node.js 框架。Fastify是一个高度专注于以最少开销和强大的插件架构,使用简单,扩展灵活,包含了基于扩展的开发方式, 同时官方为了方便开发plugin,提取了通用部分,方便模块化,同时我们可以在路由中添加schema 方便的进行数据的校验(基于json schema),生态也很不错,已经提供了很多扩展插件。
https://github.com/fastify/fastifygithub.com
LoopBack开发框架是一套Node.js模块集,可以用独立使用或整合使用来快速开发REST API接口程序。背后是IBM的子公司在支持。
LoopBack应用可以通过模型API来跟数据交互,本地通讯在Node.js内部完成,远程通讯使用REST客户端API,如与原生客户端iOS、Anroid和Html5等进行通讯。
https://github.com/strongloop/loopbackgithub.com
HapiJS是一个开源的、基于Node.js的应用框架,它适用于构建应用程序和服务,其设计目标是让开发者把精力集中于开发可重用的应用程序的业务逻辑,向开发者提供构建应用程序业务逻辑所需的基础设施。
https://github.com/hapijs/hapigithub.com
网易开源的游戏后端框架。pomelo是一个游戏服务器框架,与以往单进程的游戏框架不同, 它是高性能、高可伸缩、分布式多进程的游戏服务器框架,并且使用很简单。它包括基础开发框架和一系列相关工具和库,可以帮助开发者省去游戏开发中枯燥的重复劳动和底层逻辑工作,免除开发者的重造轮子,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。Pomelo支持所有主流平台的客户端,并提供了客户端的开发库。
https://github.com/NetEase/pomelogithub.com