盘点Github九大流行Node.js框架

qaba7743 4年前
   <p style="text-align:center"><img src="https://simg.open-open.com/show/ac6334116ba3e822fdbb32ca76e10418.jpg"></p>    <p>这篇文章的重点是Node.js框架,探讨各类Node框架的优劣,并提供每个Node框架的描述,包括在Github上的受欢迎程度以及各自支持者或社区的贡献。</p>    <p>Node.js 是由Ryan Dahl于2009年创建的。它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。你 可以通过在Node.js中运行JavaScript,使用Ruby或者PHP语言做想做的任何事情。</p>    <p>由于其具有可以方便地搭建响应速度快、易于扩展的网络应用等特性,Node.js受到了Netflix,Groupon,PayPal,LinkedIn,Uber,eBay等公司的信任,这进一步促进了Node.js的发展。</p>    <h2>为什么开发人员喜欢Node.js?</h2>    <p>以下可能是开发人员选择Node.js原因的简短列表:</p>    <p>1、快速:V8 Google Engine授权Node.js提供一个快速发布周期。这使得网络连接,文件系统和数据库的读取和写入超级快。</p>    <p>2、实时性:websocket协议的强大功能允许客户端和服务器之间轻松快速通信。它是即时的,是实时应用程序的理想选择,如聊天或游戏这类应用。</p>    <p>3、灵活:开发人员可以为客户端,服务器端,后端和前端应用程序使用相同的语言(可以同时执行),它提供端到端的解决方案。</p>    <p>4、跨平台支持:Node.js可以在任何操作系统上虚拟运行。这意味着Node.js可移植,所以,应用程序能够支持广泛的用户受众。</p>    <p>5、单线程:Node.js在不新增额外线程的情况下,依然可以对任务进行并行处理——Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充分利用这一点——尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。</p>    <p>6、事件循环:Node.js使用事件循环来代替可伸缩性,而不是进程或线程。服务器在回调定义结束时自动进入事件循环。</p>    <p>7、社区:Node.js背后有一个强大的,多样化的,活跃的和快速扩张的社区支持。开发人员使用Github共享成果,提出功能请求、上传包或进行错误修复。</p>    <p>总而言之,开发人员之所以喜欢Node.js,是因为其将脚本语言(JavaScript)的易用性和有着各种框架可供选择的Unix网络编程的强大功能相结合了。</p>    <p>基于应用程序的功能,我将Node框架分为三种类型:API,全栈和类Sinatra。</p>    <h2>API</h2>    <p>以下框架由API驱动,是快速部署Node.js API服务器的理想选择。</p>    <h3>#1 Actionhero</h3>    <p>这是一个用于Node.js的快速,轻量级和多重传输的API服务器,非常适合用于创建一个易于使用的工具包来制作可重用和可扩展的API。</p>    <p>可以提供给http sockets,tcp sockets和web sockets。actionHero.js提供创建易用的,可重用可伸缩的API工具包。客户端连接到actionHero.js服务器就可以使用APIs,使用静态内容和相互沟通。</p>    <p>actionHero.js服务器可以处理请求和任务(延迟action 比如:send e-mail或者是后台任务)。</p>    <p>Github stars:1,499</p>    <p>Github contributors: 67</p>    <h3>#2 Loopback</h3>    <p>这是一个由IBM创建的高度可扩展的API框架,允许使用非常少的编码创建动态的端到端REST API。它通过为开发人员提供一个简单的API工具来补充Express框架。</p>    <p>Loopback API可以连接设备,并与Android,iOS和AngularJS SDK集成以创建客户端应用程序。对于应用程序的图形版本,Loopback使用StrongLoop Arc。</p>    <p>Github stars: 7,817</p>    <p>Github contributors: 80</p>    <h3>#3 Restify</h3>    <p>这是一个为REST API而创建的轻量级框架,它是一个通过API提供数据的服务器端框架。Restify重点关注调试和分析,以优化服务器。</p>    <p>Github stars: 5,966</p>    <p>Github contributors: 142</p>    <h3>#4 Socket.io</h3>    <p>该 框架的目的是支持实时web应用(例如文档协作和数据交换)。Socket.io允许Web客户端和服务器之间的事件驱动通信。socket.io是一个 跨平台,多种连接方式自动切换,做即时通讯方面的开发很方便,而且能和expressjs提供的传统请求方式很好的结合,即可以在同一个域名,同一个端口 提供两种连接方式:request/response, websocket(flashsocket,ajax…).</p>    <p>Github stars: 28,887</p>    <p>Github contributors: 123</p>    <h2>Full Stack</h2>    <p>以下框架专注于全栈支持,它们涵盖了应用程序开发的每一步,从中间件和UI到API和数据库集成。</p>    <h3>#5 Meteor</h3>    <p>Meteor是用于构建实时web应用程序的模型视图控制器(MVC)框架,其与服务器不断同步。它是内置的一套预编写自包含模块,支持应用程序代码编写。</p>    <p>使用Meteor构建的应用程序可以在OS X,Windows和Linux操作系统上运行。</p>    <p>Github stars: 36,081</p>    <p>Github contributors: 321</p>    <h3>#6 Keystone</h3>    <p>此框架是数据库驱动Web应用程序和API的理想选择,其中Express,MongoDB和Mongoose是Node堆栈的关键组件。</p>    <p>Github stars: 8,352</p>    <p>Github contributors: 181</p>    <h2>Sinatra-Like</h2>    <p>以下是轻量级框架,其功能类似于Sinatra。</p>    <h3>#7 Express</h3>    <p>Express 是基于Node.js平台快速、开放、极简的web开发框架。Express是最重要的节点框架之一,是构建Web/移动应用程序和API的理想选择。 Express不是对Node.js已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的基本功能。</p>    <p>Github stars: 28,683</p>    <p>Github contributors: 192</p>    <h3>#8 Koa</h3>    <p>这是一个无回调的轻量级中间件框架,允许编写Web应用程序和REST API,还可以添加新功能并自定义路径中的内容,它支持ES6和最新的JavaScript版本。</p>    <p>对于Node.js的初级者来说,这不是理想的第一选择。</p>    <p>Github stars: 12,779</p>    <p>Github contributors: 91</p>    <h3>#9 Hapi</h3>    <p>Hapi框架是快速构建和API测试的理想选择,也可以使用Hapi构建完整的网站。它有一个十分不错的插件集合,使其能够在不破坏其余代码库的情况下,只在局部进行工作,对于团队项目而言十分受用。</p>    <p>由于Hapi是由Walmart开发人员创建的,因此它提供了企业级功能。</p>    <p>Github stars: 7,015</p>    <p>Github contributors: 151</p>    <h2>结语</h2>    <p>在 几年的时间里,Node.js逐渐发展成了一个成熟的开发平台,吸引了许多开发者。虽然Node项目还非常年轻,但很少看到对一个项目如此狂热的社区。不 管是新手,还是专家,大家都围绕着项目,使用并贡献自己的能力,致力于打造一个探索、支持、分享、听取建议的环境。目前,有许多大型高流量网站都采用 Node.js进行开发。此外,开发人员还可以使用它来开发一些快速移动Web框架,希望Node.js可以在公司和社区的双重努力下,发展的更好。</p>    <p> </p>    <p>来自:http://www.techug.com/9-node-js-framewrok-on-github</p>    <p> </p>