美文网首页
Express子应用程序以及创建模块路由

Express子应用程序以及创建模块路由

作者: 听书先生 | 来源:发表于2022-03-29 14:44 被阅读0次
    • 子应用程序与主应用程序:

    express模块每一次执行都会创建一个应用,而每一个子应用都会通过use的方法挂载到主应用上。
    需要注意的是:只有主应用程序能挂载端口号,因为每一个子应用挂载端口的话,无法找到入口程序

    1、创建子应用程序game.js和user.js

    // 游戏部分的中间件
    const express = require('express');
    
    const game = express();
    
    game.use('/', (req, res, next) => {
        res.send('/game')
    })
    
    module.exports = game;
    
    // 用户部分的中间件
    const express = require('express');
    
    const user = express();
    
    user.use('/', (req, res, next) => {
        res.send('/user')
    })
    
    module.exports = user;
    

    2、创建一个主入口程序

    const express = require("express");
    const app = express();
    const game = require("./app/game.js");
    const user = require("./app/user.js");
    
    app.use('/game', game);
    app.use('/user', user);
    
    app.use((err, req, res, next) => {
       res.status(500).send(`页面异常.`); // 如果请求返回的状态码为500,那么抛出错误
    })
    
    app.listen(3000, () => console.log('http://localhost:3000'))
    
    • express的路由:
      路由是指的接收用户请求,处理用户数据,返回结果给用户的一套程序,核心就是URL;

    Router路由模块化:
    express.Router类可以创建模块化,可以挂载路由对象.

    创建game游戏模块(先创建一个routes文件目录,routes下存放的则是你的路由模块,比如:你有游戏模块game以及用户模块user,则可以创建gameRouter.js和userRouter.js文件)

    gameRouter.js:

    const express = require("express");
    
    const gameRouter = express.Router();
    const game = require('./game/game.js')
    
    // 游戏模块路由
    gameRouter.post('/', game.addGame);
    gameRouter.delete('/:uid', game.deleteGame);
    gameRouter.delete('/', game.deleteAllGame);
    gameRouter.put('/', game.putGame);
    gameRouter.get('/:uid', game.qryGame);
    gameRouter.get('/', game.qryAllGame);
    
    module.exports = gameRouter;
    

    我们将game模块下所有的接口数据均放在一个game.js文件中,这样便于模块化管理
    game.js代码:

    // 所有game模块的接口数据
    const game = {
        // 新增游戏名称
        addGame: (req, res) => {
            res.send('新增了一个游戏')
        },
        // 1. 删除单个
        deleteGame: (req, res) => {
            let {
                uid
            } = req.params;
            res.send(`删除${uid}游戏名称`)
        },
        // 2. 删除所有
        deleteAllGame: (req, res) => {
            res.send(`删除所有的游戏名称`)
        },
    
        // 修改游戏名称
        putGame: (req, res) => {
            res.send(`修改游戏名称`)
        },
    
        // 查询
        // 1. 查询某一个的详情
        qryGame: (req, res) => {
            let {
                uid
            } = req.params;
            res.send(`查询${uid}游戏名称`)
        },
        // 2. 查询所有数据
        qryAllGame: (req, res) => {
            res.send(`查询所有的游戏名称`)
        },
    };
    
    
    module.exports = game;
    

    最后我们在主程序模块导入gameRouter模块

    const express = require("express");
    const app = express();
    
    const gameRouter = require("./routes/gameRouter.js");
    
    
    app.use('/game', gameRouter);
    
    app.use((err, req, res, next) => {
       res.status(500).send(`页面异常.`); // 如果请求返回的状态码为500,那么抛出错误
    })
    
    app.listen(3000, () => console.log('http://localhost:3000'))
    

    路由模块化对于非常多且复杂的业务逻辑时处理起来是非常简洁的。
    接口测试:

    图1.png
    图2.png
    图3png

    相关文章

      网友评论

          本文标题:Express子应用程序以及创建模块路由

          本文链接:https://www.haomeiwen.com/subject/vufyjrtx.html