• 10 【Express基本使用】


    10 【Express基本使用】

    https://www.expressjs.com.cn/

    基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    1.Express的安装方式

    Express的安装可直接使用npm包管理器上的项目,在安装npm之前可先安装淘宝镜像:

    npm install -g cnpm --registry=https://registry.npmmirror.com/
    
    • 1

    这样我们使用cnpm的来代替npm,这使得下载速度提高很多;其次你需要在你项目目录下运行以下指令来初始化npm,期间所有提示按enter键即可,这会生成package.json,它是用于描述项目文件的。

    cnpm init
    
    • 1

    再输入

    cnpm install
    
    • 1

    这下项目目录中又会多出一个叫node_modules文件夹,里面是node.js为我们提供的模块,当然现在没有。接下来便是真正的安装express了,执行:

    cnpm install express --save
    
    • 1

    这时,我们看到node_modules文件夹多了许多不同版本的应用文件夹,接下来执行

    express --version
    
    • 1

    查看express是否安装成功,如果显示版本号,则安装正确。

    image-20221103194431096

    2.运行原理

    底层:http模块

    Express框架建立在node.js内置的http模块上。http模块生成服务器的原始代码如下

    var http = require("http");
    
    var app = http.createServer(function(request, response) {
       
      response.writeHead(200, {
       "Content-Type": "text/plain"});
      response.end("Hello world!");
    });
    
    app.listen(3000, "localhost");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Express框架的核心是对http模块的再包装。上面的代码用Express改写如下

    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
       
      res.send('Hello world!');
    });
    
    app.listen(3000);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Express框架等于在http模块之上,加了一个中间层

    什么是中间件

    • 简单说,中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。App实例在运行过程中,会调用一系列的中间件
    • 每个中间件可以从App实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。
    • 一个不进行任何操作、只传递request对象的中间件,就是下面这样
    function uselessMiddleware(req, res, next) {
       
      next();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 上面代码的next就是下一个中间件。如果它带有参数,则代表抛出一个错误,参数为错误文本
    • 抛出错误以后,后面的中间件将不再执行,直到发现一个错误处理函数为止
    function uselessMiddleware(req, res, next) {
       
      next('出错了!');
    }
    
    • 1
    • 2
    • 3
    • 4

    3.Express 方法

    Express路由简介

    路由表示应用程序端点 (URI) 的定义以及响应客户端请求的方式。它包含一个请求方时(methods)、路径(path)和路由匹配时的函数(callback);

    app.methods(path, callback);
    
    • 1

    Express路由方法

    Express方法源于 HTTP 方法之一,附加到 express 类的实例。它可请求的方法包括:

    get、post、put、head、delete、options、trace、copy、lock、mkcol、move、purge、propfind、proppatch、unlock、report、mkactivity、checkout、merge、m-search、notify、subscribe、unsubscribe、patch、search 和 connect。

    路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。

    路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [callback…], callback), app 是 express 对象的一个实例, METHOD 是一个 HTTP 请求方法, path 是服务器上的路径, callback 是当路由匹配时要执行的函数。

    下面是一个基本的路由示例:

    var express = require('express');
    var app = express();
    
    // respond with "hello world" when a GET request is made to the homepage
    app.get('/', function(req, res) {
       
      //写完一个send,后面所有跟路由有关的都不会执行
      //会自动响应对应的数据类型
      //   res.send([1, 2, 3]);
      //   res.send({ ok: 1 });
      //   res.json({ ok: 1 });
       // 使用混合使用函数数组处理时如果前面有res.send();那么后面和路由处理相关代码都不生效
      res.send('hello world');
      res.send(`
            
                

    hello world

    `
    ); });
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。

    all方法和HTTP动词方法

    针对不同的请求,Express提供了use方法的一些别名。比如,上面代码也可以用别名的形式来写

    var express = require("express");
    var http = require("http");
    var app = express();
    
    app.all("*", function(request, response, next) {
       
      response.writeHead(200, {
        "Content-Type": "text/plain" });
      next();
    });
    
    app.get("/", function(request, response) {
       
      response.end("Welcome to the homepage!");
    });
    
    app.get("/about", function(request, response) {
       
      response.end("Welcome to the about page!");
    });
    
    app.get("*", function(request, response) {
       
      response.end("404!");
    });
    
    http.createServer(app).listen(1337);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 上面代码的all方法表示,
  • 相关阅读:
    Linux apt命令详解
    一文解读所有HashMap的面试题
    驾驶员蓝牙耳机怎么选?开车可以打电话的蓝牙耳机
    lua基本语法
    java计算机毕业设计机械生产企业办公设备管理系统源码+mysql数据库+系统+lw文档+部署
    MSP430F5529时钟系统配置
    经典算法之快速排序(QuickSort)
    造轮子之集成GraphQL
    想问下这个选什么?感觉正确答案是错误的,但又不知道正确的是哪个
    分享一下微信报名系统怎么做
  • 原文地址:https://blog.csdn.net/DSelegent/article/details/127819527