乐博娱乐»NodeJS»如何选择Node.js Web乐博娱乐开发框架?

如何选择Node.js Web乐博娱乐开发框架?

来源:idlelife.org 宣布时间:2014-10-12 阅读次数:乐博

  Node.js很是适用于Web乐博娱乐开发,但是现在无论是一个网站,照旧Web App都已经成为包罗许多差异部门,如前端、数据库、业务模块、功效模块等等的大型项目,使用Node.js从零开始进行Web乐博娱乐开发,也许大中型团队能够胜任,但对于小我私家和小型团队来说是不现实的。这时候框架就成为Web乐博娱乐开发利器,对于小我私家乐博娱乐开发来说险些是必不行少。那么如何选择Node.js Web乐博娱乐开发框架呢?

nodejs frameworks

  首先,我们必须要弄清楚的是,我们需要的是——

  程序 or 框架?

  程序是已经成型的应用,你需要的是为它搭建情况、添加配置,然后就可以运行起来;框架则是应用的骨架,你需要为它添加数据模型、业务逻辑,它才气成为应用,开始提供服务。

  事实上,对于Web乐博娱乐开发来说,程序和框架的区别正越来越模糊,好比险些妇孺皆知的Wordpress,它是一个博客程序,但它富厚的插件以及高度的自界说能够支持很洪流平上的二次乐博娱乐开发,在这点上它比起一些PHP框架也并不逊色。我小我私家认为,如果重心在于提供服务而不是掌握技术,有WordPress这样的程序是没有须要使用框架的。

  可惜的是,由于Nodejs还很年轻,目前还没有WordPress这样的程序,因此目前在Node.js乐博娱乐开发里,如果想做出自己想要的作品,框架是一定的选择。如果是某些特定类型的应用,可以实验一些开源的程序,好比要用Nodejs做博客,有Hexo、Ghost等。

  Node.js Web框架有哪些?

  Node.js里的Web框架分为API框架和Web应用框架。前者能够乐博娱乐开发出RESTful的API,后者也能乐博娱乐开发出RESTful API,但还包罗模板、渲染等为前端所准备的功效。

  API框架的使用场景是为跨平台应用提供统一的数据模型,而渲染由前端/客户端自行解决。目前比力知名的API框架有

  Web应用框架顾名思义,就是为了打造Web应用所乐博娱乐开发的框架。这里有两种气势派头的Web应用框架。

  一个是Sinatra气势派头,另一个是Rails气势派头。Sinatra和Rails都是Ruby语言的Web框架,后者的影响力更大也更为知名。这里简朴的解释一下两种气势派头是什么意思。

  Sinatra气势派头是指高度可配置,注重乐博娱乐开发的自由度。代表性的Nodejs Web框架有:

  Rails气势派头则是指不重复自己和约定优于配置,以及严格遵循MVC结构乐博娱乐开发。代表性的框架有:

  这两种气势派头无所谓谁优谁劣,全凭使用者的偏好。

  而在这两种Web框架之外,另有更大型的框架,即全栈框架,其中的代表是MEAN。

  MEAN?

  MEAN指MongoDB+Express+Angular.js+Node.js,这一组合包罗运行情况、数据库、Web框架和前端引擎。被称为全栈框架(Full-stack framework)。这其中除了Node.js之外,每一个都是可替换的,目标是创建从前端到后端,全部使用javascript的Web应用。

  由于这一框架的完善性,有人将其称为LAMP的接班人。LAMP即PHP的典型运行情况,Linux+Apache+MySql+PHP,被大量的用于各种虚拟主机上。

  MEAN看似庞大,但事实上要构建完整的现代化Web应用,特别是SPA(单页面应用),这几个组件都是难以缺少的,而且,其中每一项险些都是目前情况下的最佳选择,因此用于学习和重头开始打造新的Web应用是很是合适的。但由于实际业务的奇特性,很可能要替换其中的组件,好比用Mysql来替换MongoDB,因此,学习其中的原理和架构,打造自己的类MEAN框架也是一种选择。

  作为小我私家和小团队来说,全栈框架MEAN基本上足够了,但目前大多数全栈框架还包罗一项特性,那就是实时,拥有实时功效的框架我们又称为实时框架。

  实时框架好吗?

  实时框架(Real-time framework)指包罗了webSocket的双向通信功效,能够在服务器和客户端做到实时通信的框架。

  服务端和客户端自由通信的需求一直都在,但由于HTTP协议自己的局限性,因此催生了Comet等变通的要领,但纵然这样也离实时相距甚远。而当Node.js兴起后,另一个HTML5技术webSocket也徐徐成熟,人们突然发现,实时通信一下子变得触手可及,于是webSocket技术在Node.js中获得大量的应用,其中最为知名的模块就是socket.io,而各种全栈框架也纷纷加入实时特性来应对更辽阔的乐博娱乐开发需求。

  目前有代表性的实时框架有:

  不外说实话,目前能看到的实时通信的应用场景其实不多,其中大多集中于聊天室、to-do、实时图表、在线游戏等领域。其他领域使用实时特性不光没须要,而且是对服务器资源的浪费。因此目前是否要接纳实时框架,要看具体的项目而定。

  以上基本就是Node.js Web框架的现状了,相信看到这里,对于选择何种框架读者已经心里有数了吧。最后再介绍一个容易搞混的看法,息争释一下我的选择。

  YEOMAN?

  第一次见到这个词,我还以为它和MEAN有什么联系。事实上,它们是截然差异的两个工具。YEOMAN由YO(脚手架)、grunt(构建工具)、bower(保证理器),它代表的是一种事情流,与框架乐博娱乐开发的思维方式完全差异。具体的介绍可见这里

  YEOMAN能够和框架到达类似的目的,都是为构建一个Web应用做好准备,但是要不要接纳YEOMAN,则是见仁见智。我小我私家的看法是,学习YEOMAN自己就需要不少时间,而且有一定的学习门槛。至少在目前,使用框架乐博娱乐开发照旧相对经济的,而如果以后YEOMAN这种模式推广开来,再来学习也不迟,更况且有一定的Node.js项目经验之后再来学习YEOMAN要轻松许多。

  事实上,我照旧很认可YEOMAN这种Generator+package Manager的模式的,这是因为Node.js自己崇尚微模块的看法,即无论是何等小的功效,都将它们模块化,甚至大的模块也要拆分成小的模块,然后通过搭积木的方式来构建应用。这样能够彻底的解耦,对于不容易调试的Javascript来说,也有助于定位和修复应用中的问题。Generator就是这种理念催生下的产物,通过选择差异的配置和选项,将积木搭起来。不外对于这种模式目前各人也还处于实验当中,不急于进行实际应用。

  为什么我选择了Hackathon Starter?

  在我的小我私家项目中,使用的是Hackathon Starter,一个Node.js Web应用脚手架

  我使用它的原因是,要求高度可配置,同时又讨厌写一些配置的代码,因此它对于我来说是很好的选择。一些全栈框架对我来说,封装过多,将原生的Node.js/Express API隐藏掉了,要使用还需要一定的学习成本。而Express这样的框架又太过简练,在实际的项目中使用还需要大量的插件和配置,而这些在Hackathon Starter中都已经帮我们做好了,同时另有一些示例代码以供学习,对于新人来说很是友好,可以制止过多的挫折感。

  上面一段可以看做是免费为Hackathon Starter做的广告吧,开源项目需要宣传和布道才气让更多人所关注。

  最后,本文里的框架大多来源于nodeframework网站,本文可以看做是该站的注释版,在扫清我自己的一些疑惑的同时,也希望对读者有所帮助。