我最近已经进入AngularJS,我喜欢它 . 对于即将到来的项目,我希望使用MEAN堆栈(MongoDB,Express,Angular,Node) . 我对Angular非常熟悉,我对堆栈中MongoDB和Node的用途有一点了解 . 但是,我真的不明白Express.js的用途是什么 . MEAN堆栈是否必不可少?你会在传统的MySQL,PHP,javascript应用程序中将它与什么进行比较?它的其他三个组件不能做什么呢?
此外,如果有人想要自己了解堆栈的四个部分如何协同工作,那就太好了 .
5 回答
MongoDB =数据库
Express.js =后端Web框架
Angular =前端框架
Node =后端平台/ Web框架
基本上,Express所做的是通过提供一个稍微简单的界面来创建您的请求 endpoints ,处理cookie等,而不是vanilla Node,它使您能够轻松创建Web应用程序 . 您可以将其排除在等式之外,但是您必须在制作Web应用程序时做更多的工作 . 节点本身可以做快递所做的一切(快递是用节点实现的),但表达只是将它包装在一个更好的包中 .
我会将Express与您描述的堆栈中的某些PHP Web框架进行比较,例如slim .
您可以将Express视为使用Node.js创建Web应用程序的实用程序带 . 它提供了构建Web服务器所需的几乎所有功能 . 如果您要使用vanilla Node.js编写相同的功能,则必须编写更多代码 . 以下是Express的功能示例:
使用类似的东西简化REST路由
app.get('/user/:id', function(req, res){ /* req.params('id') is avail */ });
一个中间件系统,允许您插入不同的同步函数,这些函数通过请求或响应执行不同的操作,即 . 身份验证或添加属性
app.use(function(req,res,next){ req.timestamp = new Date(); next(); });
用于解析POST请求主体的函数
跨站点脚本预防工具
自动HTTP标头处理
app.get('/', function(req,res){ res.json({object: 'something'}); });
一般来说,Sinatra是Ruby,Express是Node.js.我知道这不是一个PHP示例,但我对PHP框架知之甚少 .
Express处理诸如cookie之类的东西,解析请求体,形成响应和处理路由 .
它也是应用程序的一部分,它监听套接字以处理传入的请求 .
一个简单的例子来自express github
显示快速服务器的创建,创建路由
app.get('/'...
并打开端口以侦听传入的http请求 .与vanilla js相比,Express允许您轻松管理http请求 . 您需要以下内容才能获取请求
在express中,您需要表达并使用它并发出http请求
在基于Node.js的框架中表达,简化了编写服务器端代码和逻辑的过程 .
添加了许多实用程序功能并提供了其他功能,通常可以使事情变得更容易 .
Express是 middleware-based :它基本上通过一系列中间件(步骤)汇集传入的请求,我们可以对请求执行某些操作,从中读取一些数据,操作它,检查用户是否经过身份验证或基本上立即发回响应 .
这个中间件链允许我们编写非常结构化的代码