Express.js在MEAN堆栈中做了什么?

时间:2013-10-16 18:35:46

标签: node.js mongodb angularjs express

我最近已经进入AngularJS并且我喜欢它。对于即将到来的项目,我希望使用MEAN堆栈(MongoDB,Express,Angular,Node)。我对Angular非常熟悉,我对堆栈中MongoDB和Node的用途有一点了解。但是,我真的不明白Express.js的用途是什么。 MEAN堆栈是否必不可少?你会在传统的MySQL,PHP,javascript应用程序中将它与什么进行比较?其他三个组件不能做什么呢?

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

6 个答案:

答案 0 :(得分:62)

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

基本上,Express所做的是,通过提供一个稍微简单的界面来创建请求端点,处理cookie等,而不是vanilla Node,它使您能够轻松创建Web应用程序。你可以将它排除在等式之外,但是你必须在制作网络应用程序时做更多的工作。节点本身可以​​做快递所做的一切(快递是用节点实现的),但表达只是将它包装在一个更好的包中。

我会将Express与您描述的堆栈中的某些PHP Web框架进行比较,类似于slim

答案 1 :(得分:20)

您可以将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框架知之甚少。

答案 2 :(得分:4)

Express处理诸如cookie之类的内容,解析请求主体,形成响应和处理路由。

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

来自express github

的简单示例
var express = require('express');
var app = express();

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

显示快速服务器的创建,创建路由app.get('/'...并打开端口以侦听传入的http请求。

答案 3 :(得分:1)

在基于Node.js的框架中表达,简化了编写服务器端代码和逻辑的过程。

添加了许多实用程序功能并提供了附加功能,通常使事情变得更容易。

Express是基于中间件的:它基本上是通过一系列中间件链(步骤)来对传入的请求进行漏斗处理,在中间件中我们可以对请求进行处理,从请求中读取一些数据,对其进行处理,检查是否用户已通过身份验证或基本上立即发送回响应。

该中间件链使我们能够编写非常结构化的代码

答案 4 :(得分:1)

Express是基于Http模块顶部的 nodejs框架,具有更多可用和更好的功能,例如处理路由的简便方法。

例如:使用HTTP

 var http = require('http');

//create a server object:
http.createServer(function (req, res) {
 res.writeHead(200, {'Content-Type': 'text/html'}); // http header

var url = req.url;
 if(url ==='/about'){
    res.write('<h1>about us page<h1>'); //write a response
    res.end(); //end the response
 }else if(url ==='/contact'){
    res.write('<h1>contact us page<h1>'); //write a response
    res.end(); //end the response
 }else{
    res.write('<h1>Hello World!<h1>'); //write a response
    res.end(); //end the response
 }

}).listen(3000, function(){
 console.log("server start at port 3000"); //the server object listens on port 3000
});

使用Express:

var express = require('express');
var app = express();
app.get('/about',function(req,res)=>{
res.write('<h1>about us page<h1>'); //write a response
res.end();
})

答案 5 :(得分:0)

与香草js相比,

Express允许您轻松管理http请求。 您需要执行以下操作才能获取请求

const Http = new XMLHttpRequest();
const url='https://jsonplaceholder.typicode.com/posts';
Http.open("GET", url);
Http.send();
Http.onreadystatechange=(e)=>{
console.log(Http.responseText)
}

在快递中,您需要快递并使用它并发出http请求

const express = require("express")
const app  =express();
app.get("url",callback function);