十个最适合 Web 和 APP 开发的 NodeJS 框架

在浏览器以外运行JavaScript对于JavaScript爱好者来说非常神奇,同时也肯定是web应用程序开发界最受欢迎的进步之一。全球各地的开发者张开双臂拥抱NodeJS。

对于新手来说,Node.js是JavaScript运行时,允许你在浏览器之外服务器上运行JavaScript代码。它是基于谷歌Chrome的V8虚拟机引擎建立的,V8虚拟机引擎用于在Chrome浏览器中支持JavaScript。

NodeJS逐渐普及的步伐是因为它可以让你只使用JavaScript就可以建立大规模、实时性、可扩展的移动和Web应用程序。

随着节点生态系统的增长,框架也开始着手加快工作流程。有许多的Node.js框架,允许你构建实时的端到端网络应用,而无需任何其他第三方Web服务器、应用服务器、工具和技术。

通用性的Node框架就像快递,Koa和Hapi更加灵活,让你做你想要的一切,最大限度的满足开发需求。但是,在最初你需要投入更多的努力,更加依靠开发者作出正确的决策。

而另一方面,像Mean.io,Meteor,Derby和Mojito,有自己的标准结构和技术体系,灵活性较差。然而这些框架不会给开发者太多做错误决策的空间。

让我们来看看目前可用的最好、最强大的NodeJS框架,并帮助你建立实时的、各种规模和复杂性的可扩展Web应用程序。

1.Node.jsExpress

对于一个已经在使用node.js的开发人员来说,Express或者"node.jsexpress"并不是一个新鲜事。Express框架提供了对node.js原生API的比较好的封装,从而使开发者更加容易地使用node.js。

Express框架提供了用来开发强壮的web/移动应用,以及API的所有功能。并且开发人员还能够方便地为它开发插件和扩展,从而增加Express的能力。下面列出了一些Express提供的基本的功能:

可以和任何的第三方数据库进行通讯;

可以使用任何的用户认证方式;

可以使用任何符合Express接口定义的模板引擎;

可以按照需要定义工程目录。

通过使用NodeExpress,你可以使用更少的代码来实现功能。至少通过使用NodeExpress,你可以实现中间件来响应http请求,可以定义路由表来定义对不同请求的响应函数,还可以使用模板引擎来输出html页面。

对于一个NodeJS开发新手来说,Express还提供了如下的好处:

Express的学习曲线并不陡峭,可以很快上手;

Express有非常庞大的社区,和组织良好的文档,新手可以很容易得到所需要的一切。

Express根据MIT协议进行开源,目前StrongLoop对它提供支持。你也可以通过Express的官方网站expressjs.com获得更多的信息。

2.Sails.js(node.jsmvc)

Sails作为一个非常稳固的nodejs框架,提供了建立任何规模的web应用所需要的所有功能功能。

Sails.js在底层使用了express框架来提供对http请求的处理,同时使用Socket.IO框架来处理WebSocket请求。同时作为一个前端应用开发框架,它允许开发人员选择他/她熟悉的技术来开发应用。

同时Sails.js也通过waterline框架实现了ORM功能。通过这个功能,你的应用程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外一个后端数据库(也可以是一个NoSQL数据库)。

Sails特别适合用来开发对数据的实时更新有较高要求的应用,比如多人棋类游戏,单页web应用等等。如果你对Ruby,Django或者Zend有一定的了解,那么你将非常容易理解Sail中的概念。

简单来说,Sails.js既给开发者提供了一个优秀的MVC框架,也提供了一定的灵活性,让开发者可以自主选择前端开发方式和后端的数据库。Sails.js是由MikeMcNeil创建的,现在由Treelineandbalderdash提供支持。Sails.js在MIT协议下开源。

你可以在网站sailsjs.org上找到更多关于这个框架的内容。

3.KOA

KOA是node.jsmvc框架的后起之秀,在2013第四个季度才发布了第一个版本。开发KOA的人员基本来自Express开发团队,TJHolowaychuk是KOA开发团队的领导者。虽然KOA大部分开发人员来自Express,但是他们使用了完全不同的技术来开发KOA,并且KOA正成为Express一个强有力的竞争对手。

KOA框架的核心是ES6的generator。KOA使用generator来实现中间件的流程控制,使用try/catch来增强异常处理,同时在KOA框架中你再也看不到复杂的callback回调了。

KOA框架本身非常小,只打包了一些必要的功能,但是它本身通过良好的模块化组织,让开发人员可以按照自己的想法来实现一个扩展性非常好的应用。

许多JavaScript/Node.js的忠实开发者都开始选择使用KOA来开发新的项目,因为KOA提供了更多的灵活性开发应用程序。

你可以通过koajs.com获取更多的信息。

4.Meteor

Meteor框架是Node.js上最出色的全栈框架。项目在GitHub上有28K+的赞,拥有大量的自定义包,庞大的社区支持,非常好的教程和文档。在这个领域Meteor毫无疑问是王者,你可以用它构建纯Javascript的实时Web和手机应用。

Meteor最优秀的部分是,无论是服务器端的数据库访问,商业逻辑实现,还是客户端的展示,所有的流程都是无缝连接,开箱即用。整个框架使用统一的API,MeteorAPI同时适用于客户端和服务器端。

它使用的DDP协议可以让你在后端连接简单的数据库服务、企业数据仓库、甚至IOT传感器。Meteor带有自己默认的栈,但又有足够的灵活性,可以让你选择自己的技术方案。如果你不需要尝试其他的框架或者没有其他的条件限制,你可以直接使用默认配置,进行快速地应用开发。

Meteor拥有专业化的开发团队,顶级风投的大量资金支持,这都让Meteor能够时刻保持业界领先。

你可以通过meteor.com网站进一步了解Meteor。

5.Derby.js

Derby.JS跟它的直接竞争对手Meteor、Mean.io、以及Mojito一样,也是一个全栈框架。它运行在Nodejs+mongo+Redis的上层。Derby主要部分是一个叫做Racer的数据同步引擎,它能够让数据在数据库、服务器和浏览器之间的同步变得轻而易举。

Racer的确能够让基于Derby框架的应用运行地更快,无论是在浏览器端还是服务器端,对于单页面应用来说,它都是一个完美的选择方案。Derby经常被用来和业界老大Meteor进行比较,Meteor项目已经开发了一段很长时间,因而能够提供更多的开箱即用的功能,使得在更短时间内开发复杂的web应用变得更加容易。

而Derby更适合于需要更快运行速度的应用,并且它的模块化方式能够让应用更灵活,更容易扩展。Derby最近的发展有些缓慢,但它并没有出局,仍有改写Nodejs全栈框架游戏规则的潜力。

你可以通过derbyjs.com网站进一步了解Derby。

6.Flatiron.js(Node.jsMVC框架)

Flatiron框架背后的核心思想是让你能使用它所提供的组件以及一些第三方库构建你自己的全栈框架。很酷不是吗?我个人十分的喜欢这种方式。然而,这带来的是更高的复杂度,并有可能会被使用错误组件的开发者搞得一团糟。

你能称之为一个由多个相互独立的组件松散地组建起来的全栈MVC框架。Flatiron框架支持Director,一个从头到脚都使用JavaScript搭建起来的,并不需要任何依赖项的URL路由组件。

通过一个叫Plates的模板引擎,Flatiron能够支持模版语言,然而数据管理是通过json实现的,并能与任何一种数据库一起使用。Flatiron现在由Nodejitsu以及其他的社区成员在进行维护,并做的相当不错,是一个不那么流行却值得一看的框架。

你能在flatironjs.org上获得更多信息。

7.Hapi

Hapi是为数不多的不依赖于Express的node.js框架,现在甚至已经完全独立于Express了。在最近一段时间中,很多开发者选择了Hapi而非Express,这使得它或多或少变为了Express的竞争对手。

Hapi在众多nodejs的框架中并非一个老牌选手,然而它却成功的在这当中创造了自己的一个生态圈。Hapi致力于完全的分离nodeHTTP服务器、路由以及业务逻辑,并更多的聚焦于如何尽可能的通过配置而非代码来控制东西。

Hapi最初是由EranHammer以及在Walmartlabs的团队为了工作需要开发的。其后便以极快的速度受到了欢迎,现在已在MIT许可下成为一个开源的框架,能够免费的被下载和使用。

迪士尼、雅虎、Pebble、beats音乐以及Walmart这样的公司都在使用HAPI作为他们旗下一个或多个项目的网络应用框架,它的影响力便可见一斑了。

你能在hapijs.com上找到更多关于Hapi的信息。

8.Mean.IO

Mean是MongoDB,Express,Angular和Node.js捆绑在一起的组合。基本上说只要有它,你就拥有了数据库层,服务器端和网页前端的整套工具,足以开发所有类型的现代网络应用。

Mean是一个完整独立的包,它涵盖了应用开发的所有方面。尤其适合于那些需要快速开始开发的人。它内置多种技术而且在联合使用时变现非常好。可以用于创建任意大小和复杂度的应用。

使用Mean,开发者可以避免经历混合和匹配不同的技术栈。通过mean栈,你可以减少安装和配置MongoDB,Express,Angular和Node.js需要的时间。Mean.io的另一个巨大好处就是所有的栈都使用JavaScript,服务器端Express对MongoDB的访问(json)和通多Angular从Node到客户端。

在这里-mean.io了解更多Mean.io的相关信息。

还有一个名为mean.js的mean分支也相当流行。

9.Mojito

Mojito由Yahoo开发并迅速取得成功。然而很快又带着关于框架的空前的成功坐到了冷板凳,就像Meteor和Meanstack那样。

Mojito同样是一个MVC应用框架,非常适合于创建使用HTML5,JavaScript和CSS3的高性能的网络和手机应用。Mojito的根本目标是提供一个框架,该框架用于构建标准的基于跨平台的应用。使之可以同时运行在客户端和服务器端,并实现高性能。

你可以在Yahoo开发者网页——mojito获得更多信息。

10.SocketStream

SocketStream是一个有趣的框架,专注于客户端和服务端数据的快速同步,它致力于前后端数据的实时更新。

它最大的特点是不严格要求你使用指定的客户端技术,也不限定数据库的ORM。我趋向于将它和有同样功能的兄弟项目Sail.js做比较,它更适合做单页web应用,多用户游戏,聊天客户端,网络应用,交易平台以及所有的需要将数据从服务端实时推送到客户端的应用。

服务端和客户端使用JSON来传输数据,比较理想的是使用websockets在服务端事件发生时自动将数据推送到客户端,Socketstream是由OwenBarnes创建,现在由PaulJensen和团队维护,他们的工作让这个框架得到了应有的荣耀。

SocketStreamframework在最近几月获得了很好的发展,未来一片光明。

更多SocketStream信息请浏览github上的-socketstream。

其它类似优秀框架还有:total.js,Geddy.JS,Locomotive,compound和Restify。

​结论

Web和应用开发的风景变化是非常快速的,开发人员转向快速框架和清洁项目交付(cleanprojectdelivery)。使用node框架的最大优势是提供了高层级结构的盒子,你可以关注扩展您的应用程序而不是努力在建设上支出。

框架提供了多样的特性,工作在不同的底层,试图解决构建实时的常见问题,并解决了可伸缩的和复杂的Web应用程序在速度上的问题。在这篇文章里讨论的框架是当今市场上最好的node.js框架。(作者:noeticforce来源:oschina​)

相关推荐