【问题标题】:What does Express.js do in the MEAN stack?Express.js 在 MEAN 堆栈中做了什么?
【发布时间】:2013-10-25 00:33:16
【问题描述】:

我最近接触了 AngularJS,我喜欢它。对于即将到来的项目,我希望使用 MEAN 堆栈(MongoDB、Express、Angular、Node)。我对 Angular 非常熟悉,并且对 MongoDB 和 Node 在堆栈中的用途有一定的了解。但是,我真的不明白 Express.js 的目的是什么。它对 MEAN 堆栈至关重要吗?在传统的 MySQL、PHP、javascript 应用程序中,您会将它与什么进行比较?它有什么其他三个组件不能做的?

另外,如果有人想就堆栈的四个部分如何协同工作发表自己的看法,那也很棒。

【问题讨论】:

标签: node.js mongodb angularjs express


【解决方案1】:

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 请求。

【讨论】:

    【解决方案2】:
    • MongoDB = 数据库
    • Express.js = 后端网络框架
    • Angular = 前端框架
    • Node = 后端平台/Web 框架

    基本上,Express 所做的是通过提供比普通 Node.js 更简单的接口来创建请求端点、处理 cookie 等,从而使您能够轻松创建 Web 应用程序。您可以将其排除在等式之外,但是您必须做更多的工作来构建您的 Web 应用程序。 Node 本身可以做所有 express 正在做的事情(express 是用 node 实现的),但是 express 只是将它包装在一个更好的包中。

    我会将 Express 与您描述的堆栈中的一些 PHP Web 框架进行比较,例如 slim

    【讨论】:

    • 对于 MS 堆栈,可以公平地说 Node IIS Web 托管服务器、Express.js ASP .Net 和 Angular Javascript/HTML 页面/MVC 视图和 MongoDB SQL 服务器。我有点困惑,因此询问。我可以从用 Nodejs 编写的代码建立数据库连接,就好像那样的话,那么 NodeJs 肯定不仅仅是一个像 IIS 这样的网络托管平台。在 MEAN 堆栈中,连接到 DB 以获取域模型信息。是 ExpressJS 还是 NodeJS?
    【解决方案3】:

    您可以将 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 框架了解不多。

    【讨论】:

      【解决方案4】:

      与普通 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)
      }
      

      在 express 中,你需要 express 并使用它并发出 http 请求

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

      【讨论】:

        【解决方案5】:

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

        添加了许多实用功能并提供了额外的功能,总的来说,使事情变得更容易。

        Express 是基于中间件的 :它基本上通过一系列中间件(步骤)汇集传入的请求,我们可以对请求做一些事情,从中读取一些数据,对其进行操作,检查是否用户已通过身份验证或基本上立即发回响应。

        这个中间件链让我们可以编写非常结构化的代码

        【讨论】:

          【解决方案6】:

          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();
          })
          

          【讨论】:

            猜你喜欢
            • 2011-05-07
            • 1970-01-01
            • 2021-12-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-04
            • 2012-11-18
            相关资源
            最近更新 更多