前言

Node.js是由Ryan Dahl于2009年创建的。它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。你可以通过在Node.js中运行JavaScript,使用Ruby或者PHP语言做想做的任何事情。

由于其具有可以方便地搭建响应速度快、易于扩展的网络应用等特性,Node.js受到了Netflix,Groupon,PayPal,LinkedIn,Uber,eBay等公司的信任,这进一步促进了Node.js的发展。

也因为它响应快,易于扩展等特点,也是实战开发的首选。开发人员之所以喜欢Node.js,是因为其将脚本语言(JavaScript)的易用性和有着各种框架可供选择的Unix网络编程的强大功能相结合了。

Node特点

1、快速:V8 Google Engine授权Node.js提供一个快速发布周期。这使得网络连接,文件系统和数据库的读取和写入超级快。

2、实时性:websocket协议的强大功能允许客户端和服务器之间轻松快速通信。它是即时的,是实时应用程序的理想选择,如聊天或游戏这类应用。

3、灵活:开发人员可以为客户端,服务器端,后端和前端应用程序使用相同的语言(可以同时执行),它提供端到端的解决方案。

4、跨平台支持:Node.js可以在任何操作系统上虚拟运行。这意味着Node.js可移植,所以,应用程序能够支持广泛的用户受众。

5、单线程:Node.js在不新增额外线程的情况下,依然可以对任务进行并行处理——Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充分利用这一点——尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

6、事件循环:Node.js使用事件循环来代替可伸缩性,而不是进程或线程。服务器在回调定义结束时自动进入事件循环。

7、社区:Node.js背后有一个强大的,多样化的,活跃的和快速扩张的社区支持。开发人员使用Github共享成果,提出功能请求、上传包或进行错误修复。

流行的开源Node.js框架

针对现在开源比较流行的几大框架做一个简单的介绍,并不深究。

Actionhero

这是一个用于Node.js的快速,轻量级和多重传输的API服务器,非常适合用于创建一个易于使用的工具包来制作可重用和可扩展的API。

可以提供给http sockets,tcp sockets和web sockets。actionHero.js提供创建易用的,可重用可伸缩的API工具包。客户端连接到actionHero.js服务器就可以使用APIs,使用静态内容和相互沟通。

actionHero.js服务器可以处理请求和任务(延迟action 比如:send e-mail或者是后台任务)。

Github stars:1,499

Github contributors: 67

Loopback

这是一个由IBM创建的高度可扩展的API框架,允许使用非常少的编码创建动态的端到端REST API。它通过为开发人员提供一个简单的API工具来补充Express框架。

Loopback API可以连接设备,并与Android,iOS和AngularJS SDK集成以创建客户端应用程序。对于应用程序的图形版本,Loopback使用StrongLoop Arc。

Github stars: 7,817

Github contributors: 80

Restify

这是一个为REST API而创建的轻量级框架,它是一个通过API提供数据的服务器端框架。Restify重点关注调试和分析,以优化服务器。

Github stars: 5,966

Github contributors: 142

Socket.io

该框架的目的是支持实时web应用(例如文档协作和数据交换)。Socket.io允许Web客户端和服务器之间的事件驱动通信。socket.io是一个跨平台,多种连接方式自动切换,做即时通讯方面的开发很方便,而且能和expressjs提供的传统请求方式很好的结合,即可以在同一个域名,同一个端口提供两种连接方式:request/response, websocket(flashsocket,ajax…).

Github stars: 28,887

Github contributors: 123

Full Stack

以下框架专注于全栈支持,它们涵盖了应用程序开发的每一步,从中间件和UI到API和数据库集成。

Meteor

Meteor是用于构建实时web应用程序的模型视图控制器(MVC)框架,其与服务器不断同步。它是内置的一套预编写自包含模块,支持应用程序代码编写。

使用Meteor构建的应用程序可以在OS X,Windows和Linux操作系统上运行。

Github stars: 36,081

Github contributors: 321

Keystone

此框架是数据库驱动Web应用程序和API的理想选择,其中Express,MongoDB和Mongoose是Node堆栈的关键组件。

Github stars: 8,352

Github contributors: 181

Sinatra-Like

以下是轻量级框架,其功能类似于Sinatra。

Express

Express是基于Node.js平台快速、开放、极简的web开发框架。Express是最重要的节点框架之一,是构建Web/移动应用程序和API的理想选择。Express不是对Node.js已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的基本功能。

Github stars: 28,683

Github contributors: 192

Koa

这是一个无回调的轻量级中间件框架,允许编写Web应用程序和REST API,还可以添加新功能并自定义路径中的内容,它支持ES6和最新的JavaScript版本。

对于Node.js的初级者来说,这不是理想的第一选择。

Github stars: 12,779

Github contributors: 91

Hapi

Hapi框架是快速构建和API测试的理想选择,也可以使用Hapi构建完整的网站。它有一个十分不错的插件集合,使其能够在不破坏其余代码库的情况下,只在局部进行工作,对于团队项目而言十分受用。

由于Hapi是由Walmart开发人员创建的,因此它提供了企业级功能。

Github stars: 7,015

Github contributors: 151

在几年的时间里,由于Node.js诸多的有点,收到企业和开发者的欢迎,逐渐发展成了一个成熟的开发平台,吸引了许多开发者,并进一步促进大前端的发展和快速移动框架的发展。

不可错过的Node.js框架的更多相关文章

  1. Node.js 框架

    Node.js的是一个JavaScript平台,它允许你建立大型的Web应用程序.  Node.js的框架平台使用JavaScript作为它的脚本语言来构建可伸缩的应用. 当涉及到Web应用程序的开发 ...

  2. LoopBack – 开源的,可扩展的 Node.js 框架

    LoopBack 是建立在 Express 基础上的开源 Node.js 框架,专门为 Mobile,Web 和其他设备做了优化.LoopBack 能够连接到多个数据源,使用 Node.js 编写业务 ...

  3. node.js框架express的安装

    node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...

  4. 13 款惊艳的 Node.js 框架——第2部分

    [编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM ...

  5. 13 款惊艳的 Node.js 框架——第1部分

    [编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM ...

  6. 【转】node.js框架比较

    我偶然间看到这篇文章,转这个文章并没有什么含义,仅仅是感觉总结的不错,对于新学node的友友们来说希望这篇文章为大家对 Node.js 后端框架选型带来一些帮助,学习不再迷茫,也是让我有个保存,以后参 ...

  7. Node.js 框架对比之 Express VS Koa

    背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣. Node 服务层作用: 请求代理 传统做法 ...

  8. 初探 Node.js 框架:eggjs (环境搭配篇)

    eggjs 是一个优秀的 Node.js 框架 概述:为什么标题上说 eggjs 是一个优秀的 Node.js 框架(可跳过)? 换言之,我们为什么选择 eggjs 进行开发而不是之前初学时使用的 E ...

  9. [Node.js框架] 为什么要开发 Codekart 框架

    两年前,在被php的$符号和字符串处理折磨得半夜骂娘之后,我义无反顾地决定:珍爱生命,远离php. 之后一直在寻找一门“完美的语言”,先后接触了Lisp.python.java.Ruby.Lisp几乎 ...

随机推荐

  1. springboot测试、打包、部署

    本文使用<springboot集成mybatis(一)>项目,依次介绍springboot测试.打包.部署. 大多数朋友是做后端的,也就是为其他系统或者前端UI提供Rest API服务. ...

  2. 在一个没有设置宽高的容器中,为什么设置position:absolute后就可以全屏显示了?

    此场景适用于移动端百分比布局,背景全屏显示. 在一个没有设置宽高的容器中设置背景,想要背景全屏显示,设置bcakground-size:100%;后还需设置position:absolut; 原因: ...

  3. [LeetCode] Non-decreasing Array 非递减数列

    Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...

  4. [LeetCode] Shopping Offers 购物优惠

    In LeetCode Store, there are some kinds of items to sell. Each item has a price. However, there are ...

  5. 空间搜索(圆范围)中Geohash编码方案和网格编码方案对比探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 多个项目中实现范围(圆)搜索的方案为:依赖库表中的X和Y字段构 ...

  6. HTTP与HTTPS

    一.HTTP和HTTPS的基本概念 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器 ...

  7. 剥掉层层外衣后的RPC是什么样子的?

    RPC,全称为Remote Procedure Call(远程过程调用).通俗一点讲就是在本地调用远程服务器上的功能.实现远程调用至少需要满足以下几个条件: 1.网络通信 2.序列化与反序列化 3.反 ...

  8. [Luogu 3674]小清新人渣的本愿

    Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x ...

  9. [HNOI 2016]网络

    Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做 一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有 ...

  10. [HAOI2011]Problem c

    题目描述 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来 了以后尝试坐到ai,如果ai被占据了,就尝试ai+ ...