Node.js 是一个开源与跨平台的 JavaScript 运行时环境
在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),
利用事件驱动、非阻塞和异步输入输出模型等技术提高性能
可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境
非阻塞异步
Nodejs采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何的阻塞,
当完成之后,以时间的形式通知执行操作
例如:
在执行了访问数据库的代码之后,将立即转而执行其后面的代码,
把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率
事件驱动
事件驱动就是当进来一个新的请求的时,请求将会被压入一个事件队列中,
然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,
那么就执行该事件对应的处理代码,一般都是回调函数
比如:
读取一个文件,文件读取完毕后,就会触发对应的状态,
然后通过对应的回调函数来进行处理.
优点:
因为Nodejs是单线程,带来的缺点有:
借助Nodejs的特点和弊端,其应用场景分类如下:
具体场景可以表现为如下:
其实,Nodejs能实现几乎一切的应用,只考虑适不适合使用它;
第四名: koa2 30k (2013年11月发布) express 的继任者。
https://github.com/koajs/koagithub.com
Koa更像是一个“框架的框架”,因为它本身实在太简单了且极度自由。
Koa 使用 Generator 来实现中间件的流程控制,使用try/catch 来增强异常处理,
同时在 Koa 框架中你再也看不到复杂的 callback 回调了。
Koa框架本身非常小,只打包了一些必要的功能,没有进程管理得搭配着第三方包一起使用。
Koa.js 可以被用于:
Koa.js 主要特性:
第三名: nest.js 30.8k (2017年11月发布) 目前上榜框架中发布最晚,
也是star 最高且增长最快的 typescript 后端框架。
https://github.com/nestjs/nestgithub.com
Nest.js 中文文档docs.nestjs.cn
Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。
真正完备的、工业级的框架。
它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码),
并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。
提供完整的解决方案,从代码到模块拆分到微服务模型。
并且它的框架底层 HTTP 平台默认是基于 Express 实现的,所以不必担心第三方库的缺失。
它也提供了一个开箱即用的应用程序架构,
允许开发人员和团队创建高度可测试,可扩展,松散耦合且易于维护的应用程序。
Nest.js 可以被用于:
Nest.js 主要特性
Total.js是助你创建Node.js,Web页面/应用的好框架,同样支持MVC架构。
Socket.io 是用来在客户端和服务器端之间创建实时双向通信的框架。
要做到这一点,客户端需要在浏览器中安装 http://Socket.io,服务器也要集成 http://Socket.io 包。
这使得数据可以在数百万种形式中共享。然而,最受欢迎的方法仍然是 JSON。
Socket.io 由以下两个部分组成:
注意: Socket.io 还兼容许多其他语言,如 Java、C+、Swift、Dart、.Net 和 Python。
Socket.io 可以被用于:
Socket.io 主要特性:
第五名: sails 21.6k (2012年7月) 最早的 node.js 类 ror 框架。
https://github.com/balderdashy/sailsgithub.com
Sails 是一个非常稳固的 Node.js 框架,提供了建立任何规模的 Web 应用所需要的所有功能。
在底层使用了 Express框架来提供对 HTTP 请求的处理,同时使用 Socket.IO 框架来处理WebSocket 请求。
它也实现了 ORM 功能,让你的应用程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外一个。
Sails 特别适合用来开发对数据的实时更新有较高要求的应用,而且它的注释巨多巨详细,生怕你不知道怎么用。关心开发者的框架才能长久下去喔。
第六名:egg 16.2k (2016年7月) 阿里开源的 node.js 框架,国内使用较为普及。
https://github.com/eggjs/egggithub.com
Egg基于Koa,约束和规范化团队开发,核心是帮助开发团队和开发人员降低开发和维护成本。
它提供基于 Egg 定制上层框架的能力,高度可扩展的插件机制,内置多进程管理,
性能优异,框架稳定。它已被用在阿里多条产品线上,可以证明它的安全可靠性,请放心使用。
第九名: hapi 12.8k (2012年8月) 老牌的 node.js 框架。
https://github.com/hapijs/hapigithub.com
Hapi.js延续了Express.JS的所有优点,并且增加了一些功能。
开发者不用再浪费时间构建基础架构,可以利用这些时间来编写可重用的应用逻辑。
它的一些优点:修复bug和增加新功能都不需要花费时间,为不同类型的客户端构建API,
基于插件的体系结构使扩展变得容易,更好地控制如何处理请求。
Hapi.js 可以被用于:
Hapi.js 主要特性: