Node.js非常适合做web开发,但是现在无论是网站还是Web App都变成了一个包含很多不同部分的大型项目,比如前端、数据库、业务模块、功能模块等等3D交通工具,使用Node .js从零开始 对于web开发web游戏开发框架,大中型团队或许能胜任,但对个人和小团队来说不太现实。 这时候框架就成为了Web开发的利器,对于个人开发来说几乎是必不可少的。 那么如何选择一个Node.js web开发框架呢?
首先,我们要搞清楚的是,我们需要的是——
程序还是框架?
程序是预先形成的应用程序。 你需要的是为它搭建环境,添加配置,然后运行; 框架是应用程序的骨架。 在它成为应用程序之前,您需要向其中添加数据模型和业务逻辑。 开始提供服务。
其实对于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框架有
API的框架,而不是API的框架。
Web应用程序框架,顾名思义,就是为创建Web应用程序而开发的框架。 Web 应用程序框架有两种风格。
一种是 Sinatra 风格,另一种是 Rails 风格。 Sinatra 和 Rails 都是 Ruby 语言的 Web 框架,后者的影响力更大,知名度更高。 这里简单解释一下这两种风格的含义。
Sinatra 风格是指高度可配置,注重开发的自由度。 代表性的 Nodejs Web 框架有:
Rails风格是指不重复自己,约定优于配置,严格遵循MVC结构开发。 代表性框架有:
这两种风格无所谓哪个更好哪个更差,完全取决于用户的喜好。
除了这两个web框架之外,还有一个更大的框架,全栈框架,其代表就是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(Single Page Application),这些组件是很难缺少的,而且每一个都几乎是目前情况下最好的选择,所以非常适合从头开始学习和构建新的 Web 应用程序。 但是由于实际业务的特殊性,很可能需要更换组件,比如用Mysql代替MongoDB。 因此,学习原理和架构并构建自己的类 MEAN 框架也是一种选择。
对于个人和小团队来说,全栈框架MEAN基本够用了,但是现在的全栈框架大多还包含一个特性,就是实时性,具有实时功能的框架也叫实时性构架。
实时框架好吗?
实时框架(Real-time framework)是指包含了webSocket双向通信功能,可以实现服务端和客户端实时通信的框架。
服务端与客户端自由通信的需求一直存在,但由于HTTP协议本身的限制,诞生了comet等workaround方式,但即便如此,也远非实时。 Node.js兴起后,另一种HTML5技术webSocket逐渐成熟,人们突然发现实时通信一下子变得触手可及,于是webSocket技术在Node.js中得到了广泛的应用,最著名的模块就是socket .io,各种全栈框架也加入了实时特性,以满足更广泛的开发需求。
目前具有代表性的实时框架有:
但说实话,目前能看到的实时通讯应用场景并不多,大部分集中在聊天室、待办事项、实时图表、网络游戏等领域。 在其他领域使用实时特性不仅没有必要,而且是对服务器资源的浪费。 所以,目前是否采用实时框架,要看具体的项目。
以上就是Node.js Web框架的基本现状。 相信看到这里,读者已经知道选择什么样的框架了。 最后介绍一个容易混淆的概念,说明一下我的选择。
约曼?
第一次看到这个词,还以为跟MEAN有关呢。 事实上,它们是两种截然不同的东西。 YEOMAN 由 YO(脚手架)、grunt(构建工具)和 bower(包管理器)组成。 它代表了一个工作流,完全不同于框架开发的思维方式。 具体介绍可以看这里()。
YEOMAN可以用框架达到类似的目的,都准备搭建一个web应用,但是用不用YEOMAN就是见仁见智了。 我个人的看法是,学习YEOMAN本身就需要花费大量的时间,并且有一定的学习门槛。 至少目前来说,使用框架开发还是比较经济的web游戏开发框架,如果以后YEOMAN的模式普及起来,再学也不晚,更何况有了一定的经验再学YEOMAN会容易很多在 Node.js 项目中。 其实我还是比较认同YEOMAN的Generator+package Manager的模式。 这是因为节点。 拆分成小模块,然后通过构建块来构建应用程序。 这样可以完全解耦,对于不容易调试的Javascript,也有助于定位和修复应用中的问题。 Generator就是这个概念的产物。 通过选择不同的配置和选项,构建块。 不过对于这个模型,大家还处于实验阶段,并不急于实际应用。
我为什么选择 Hackathon Starter?
在我的个人项目中,我使用 Hackathon Starter,一个 Node.js Web 应用程序脚手架。
我使用它的原因是我需要高度可配置,同时讨厌写一些配置代码,所以它对我来说是个不错的选择。 对我来说,有些全栈框架过于封装,隐藏了原生的Node.js/Express API,需要一定的学习成本才能使用。 但是像Express这样的框架太过简单,需要大量的插件和配置才能在实际项目中使用,而这些在Hackathon Starter中已经帮我们做好了,同时也有一些示例代码供大家学习,供大家参考新人要非常友好,避免太多挫折。
上面这段话可以看作是Hackathon Starter的免费广告。 开源项目需要宣传和布道,才能吸引更多人的关注。
最后,本文中的大部分框架都来自nodeframework网站。 本文可视为本站注释版。 在澄清自己的一些疑惑的同时,也希望对读者有所帮助。
小编推荐
原文链接: