Node.js
Node.js由Ryan Dahl于2009年创建。它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的。它允许您使用Node.js中的JavaScript执行使用Ruby或PHP可以执行的所有操作。
为什么开发人员喜欢Node.js?
这是开发人员选择Node.js开发应用程序的原因:
- 快速: V8 Google Engine使Node.js能够提供快速发布周期。这使得对网络连接,文件系统和数据库的读写速度非常快。
- 实时: websocket协议的强大功能可以在客户端和服务器之间轻松快速地进行通信。它是即时的,非常适合实时应用程序,如聊天或游戏。
- 灵活:开发人员可以为客户端,服务器端,后端和前端使用相同的语言(这可以同时执行)。它提供端到端的解决方案。
- 跨平台支持: Node.js可在任何操作系统上虚拟运行。这使Node.js可移植,并且您的应用程序能够支持广泛的用户受众。
- 线程: Node.js使用非阻塞I / O调用在单个线程上运行,支持数万个并发连接。单线程的缺点是不支持垂直缩放。
- 事件循环: Node.js使用事件循环来实现可伸缩性,而不是进程或线程。服务器在回调定义结束时自动进入事件循环。
- 社区: Node.js由强大,多样化,活跃且快速扩展的时髦社区提供支持。开发人员使用Git共享,发出功能请求并上传包和错误修复。
开发人员喜欢Node.js,因为它将脚本语言(JavaScript)的易用性与Unix网络编程的强大功能相结合,可以选择各种强大的框架。
基于应用程序功能,我将Node框架分为三种类型:API,全栈和Sinatra。
API
以下框架是由API驱动的,非常适合快速部署Node.js API服务器。
#1 Actionhero
这是一个用于Node.js的快速、轻量级和多传输API服务器,非常适合创建易于使用的工具包来制作可重用和可扩展的API。
Actionhero提供高端支持(例如通过JSON集成),但也可以在低级别上工作(例如与TCP协议通信)。它支持集群,内置支持后台任务,零停机部署,无需运行Apache或Nginx即可像CDN一样提供。
#2 Loopback
这是一个由IBM创建的高度可扩展的API框架,它允许您使用非常少的编码来创建动态的端到端REST API。它通过为开发人员提供简单的API工具来补充Express框架。
Loopback API可以连接设备并与Android,iOS和AngularJS SDK集成以创建客户端应用程序。对于应用程序的图形版本,Loopback使用StrongLoop Arc。
#3 Restify
这是一个用于构建REST API的轻量级框架。它是一个服务器端框架,用于通过API提供数据。Restify专注于调试和分析,可以优化您的服务器。
#4 Socket.io
该框架的目的是支持实时Web应用程序(例如文档协作和数据交换)。Socket.io允许Web客户端和服务器之间的事件驱动通信; 它的工作方式类似于浏览器中的客户端库,它还有一个Node.js的服务器端库。
全栈
以下框架侧重于全栈支持。它们涵盖了应用程序开发的每个步骤,从中间件和UI到API和数据库集成。
#5 Meteor
这是一个模型 - 视图控制器(MVC)框架,用于构建实时Web应用程序,该应用程序不断与服务器同步。它是内置的预编写,自包含模块集,支持编写应用程序代码。
使用Meteor构建的应用程序可以在OS X,Windows和Linux操作系统上运行。这是一个自以为是的框架。
#6 Keystone
此框架非常适用于数据库驱动的Web应用程序和API,其中Express,MongoDB和Mongoose是Node堆栈的关键组件。
Sinatra-Like
以下是轻量级框架,其功能类似于Sinatra。
#7 Express
它是快速,无条件,极简主义和高效的中间件路由框架。Express是最重要的Node框架之一,是构建Web /移动应用程序和API的理想选择。
您还可以阅读:“如何使用Node,Express 4和Docker部署RESTful API”。
#8 Koa
这是一个无回调的轻量级中间件框架,允许您编写Web应用程序和REST API。您还可以添加新功能并自定义路径中的任何内容。它支持ES6和最新的JavaScript版本。
这不是首次使用的用户的最佳框架,因为它有其他方法可供学习。
#9 Hapi
此框架非常适合快速构建和API测试,但您也可以使用Hapi构建完整的网站。它有很多插件,可以在不破坏其余代码库的情况下分段处理。非常适合团队项目。
由于Hapi是由Walmart开发人员创建的,因此它提供了企业级功能。
你会选择什么样的框架进行项目开发呢?