Express.js在MEAN栈中做什么?

我最近已经进入了AngularJS,我喜欢它。 对于即将到来的项目,我正在寻找使用MEAN堆栈(MongoDB,Express,Angular,Node)。 我对Angular非常熟悉,对于MongoDB和Node在堆栈中的用途我有一点点的了解。 不过,我不太了解Express.js的用途是什么。 MEAN堆栈是否必不可less? 你会在传统的MySQL,PHP,JavaScript应用程序中比较它? 它是做什么,其他三个组件不能做?

另外,如果有人想自己承担堆栈的四个部分如何协同工作,那就太好了。

  • MongoDB =数据库
  • Express.js =后端Web框架
  • Angular =前端框架
  • Node =后台平台/ Web框架

基本上,Express所做的就是通过提供一个稍微简单的接口来创buildWeb请求,以创build请求端点,处理cookie等,而不是像vanilla Node那样。 你可以把它从等式中删除,但是你必须做更多的工作来提升你的web应用程序。 节点本身可以​​做任何事情,快递正在做(快递是用节点实现的),但是快递只是把它包装在一个更好的包中。

我会比较快速的一些PHP Web框架在你描述的堆栈,像苗条的东西。

您可以将Express视为用于使用Node.js创buildWeb应用程序的工具带。 它提供了几乎所有你需要做的构buildWeb服务器的function。 如果你用vanilla Node.js编写相同的function,你将不得不写更多的代码。 以下是Express所做的几个例子:

  • REST路由很简单,就像
    • app.get('/user/:id', function(req, res){ /* req.params('id') is avail */ });
  • 一个中间件系统,允许你插入不同的同步function,对请求或响应做不同的事情。 authentication或添加属性
    • app.use(function(req,res,next){ req.timestamp = new Date(); next(); });
  • parsingPOST请求主体的函数
  • 跨站点脚本预防工具
  • 自动HTTP头处理
    • app.get('/', function(req,res){ res.json({object: 'something'}); });

一般来说,Sinatra对于Ruby来说就像Express对Node.js一样。 我知道这不是一个PHP的例子,但我不太了解PHP框架。

Express处理cookies等内容,parsing请求主体,形成响应和处理路由。

它也是应用程序的一部分,它侦听套接字来处理传入的请求。

来自express github的一个简单例子

 var express = require('express');
 var app = express();

 app.get('/',function(req,res){
   res.send('Hello World');
 });
 app.listen(3000);

显示创build快速服务器,创build一个路线app.get('/'...并打开端口来监听传入的http请求。