如何选择Node.js Web开发框架

如何选择Node.js Web开发框架,第1张

Nodejs非常适用于Web开发,但是现在无论是一个网站,还是Web

App都已经成为包括很多不同部分,如前端、数据库、业务模块、功能模块等等的大型项目,使用Nodejs从零开始进行Web开发,也许大中型团队能够

胜任,但对于个人和小型团队来说是不现实的。这时候框架就成为Web开发利器,对于个人开发来说几乎是必不可少。那么如何选择Nodejs

Web开发框架呢?

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

程序 or 框架?

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

事实上,对于Web开发来说,程序和框架的区别正越来越模糊,比如几乎妇孺皆知的Wordpress,它是一个博客程序,但它丰富的插件以及

高度的

自定义能够支持很大程度上的二次开发,在这点上它比起一些PHP框架也并不逊色。我个人认为,如果重心在于提供服务而不是掌握技术,有WordPress

这样的程序是没有必要使用框架的。

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

Nodejs Web框架有哪些?

Nodejs里的Web框架分为API框架和Web应用框架。前者能够开发出RESTful的API,后者也能开发出RESTful API,但还包括模板、渲染等为前端所准备的功能。

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

restify(文档、Github、NPM)

ActionHerojs(官网、Github、NPM)

LoopBack(官网、Github、NPM)

Frisby(官网、Github、NPM)

Fortunejs(官网、Github、NPM)

Web应用框架顾名思义,就是为了打造Web应用所开发的框架。这里有两种风格的Web应用框架。

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

Sinatra风格是指高度可配置,注重开发的自由度。代表性的Nodejs Web框架有:

Express(官网、Github、NPM)TJ大神开发,Nodejs官方推荐

hapi(官网、Github、NPM)

koajs(官网、Github、NPM)

flaliron(官网、Github、NPM)

totaljs(官网、Github、NPM)

locomotive(官网、Github、NPM)

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

Sailsjs(官网、Github、NPM)

geddy(官网、Github、NPM)

CompoundJS(官网、Github、NPM) 原railswayjs

这两种风格无所谓谁优谁劣,全凭使用者的偏好。

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

这里的Mongoose当然不是上的萌物,它是一个MongoDB对象建模工具(object modeling tool),以前在sails上用的Waterline是ORM (Object Relational Mapper)。当使用Mongoose时,不在需要在数据库中创建好结构(Schema)之后,再与后端代码中

程序 or 框架?

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

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

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

回到顶部

Nodejs Web框架有哪些?

Nodejs里的Web框架分为API框架和Web应用框架。前者能够开发出RESTful的API,后者也能开发出RESTful API,但还包括模板、渲染等为前端所准备的功能。

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

restify(文档、Github、NPM)

ActionHerojs(官网、Github、NPM)

LoopBack(官网、Github、NPM)

Frisby(官网、Github、NPM)

Fortunejs(官网、Github、NPM)

Web应用框架顾名思义,就是为了打造Web应用所开发的框架。这里有两种风格的Web应用框架。

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

Sinatra风格是指高度可配置,注重开发的自由度。代表性的Nodejs Web框架有:

Express(官网、Github、NPM)TJ大神开发,Nodejs官方推荐

hapi(官网、Github、NPM)

koajs(官网、Github、NPM)

flaliron(官网、Github、NPM)

totaljs(官网、Github、NPM)

locomotive(官网、Github、NPM)

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

Sailsjs(官网、Github、NPM)

geddy(官网、Github、NPM)

CompoundJS(官网、Github、NPM) 原railswayjs

这两种风格无所谓谁优谁劣,全凭使用者的偏好。

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

回到顶部

MEAN?

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

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

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

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

回到顶部

实时框架好吗?

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

服务端和客户端自由通信的需求一直都在,但由于>

express

>

>

koa

>

>

egg(阿里开源的企业级 Nodejs 框架,原型koa)

>

sails

>

>

total

>

>

本文是基于RESTful描述的,需要你对这个有初步的了解。

RESTful是什么?

Representational State Transfer,简称REST,是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

REST比较重要的点是资源和状态转换,

所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张、一首歌曲、一种服务,总之就是一个具体的实在。

而"状态转换",则是把对应的>

以上就是关于如何选择Node.js Web开发框架全部的内容,包括:如何选择Node.js Web开发框架、nodejs 连接mongoose 报错 connect ECONNREFUSED怎么解决、在node.js领域中哪一个框架用来架构API比较好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9325368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存