路由功能

Response.render()方法:渲染页面

// 渲染一个页面文件到客户端  
router.get('/', function(req, res, next) {
    //会去找views目录下的index.html文件  设置一个局部name变量,渲染到index页面上
  res.render('index', {name: '张三'});
});

Response.send()方法:发送HTTP响应

// Response.send()方法将Content-Type设置为text/html。
router.get('/user/', function (req, res) {
  // 页面直接渲染内容:<h1>html</h1>
  res.send("<h1>html</h1>");
});

express中的路由

1、在express中路由是指客户端的请求与服务区处理函数之间的映射关系

2、在express中路由有三个部分组成,分别是请求类型,请求的URL地址和处理函数,格式如下

3、express中的路由分为3部分,分别是请求类型,请求URL地址,处理函数,格式如下:


//匹配get请求,且请求的URL为'/'
app.get('/',(req,res)=>{
    res.send('hello')
})

//匹配post请求,且请求的URL为'/'
app.post('/',(req,res)=>{
    res.send('hello i am post')
})

模块化路由

为了方便对路由进行模块化的管理,express不建议将路由直接挂载到app上,而是推荐将路由抽离为单独的模块。

步骤如下:

1. 创建路由模块对应的js文件

2. 调用express.Router()函数创建路由对象

3. 向路由对象上挂载具体的路由

4. 使用module.exports向外共享路由对象

5. 使用app.use()函数注册路由模块

路由模块总入口文件:index.js

var express = require('express');
const path = require('path')
// 引入数据库
const db = require(path.join(__dirname, "../config/database")) 

// 引入用户路由模块
const UserRouter = require(path.join(__dirname, "./users")) 

// 引入首页制器
const HomeCtr = require(path.join(__dirname, "../controller/home"))

//创建首页路由模块
const HomeRouter = express.Router()

//设置首页路由规则
HomeRouter.get('/', HomeCtr.index)

module.exports = function (app) {
  // 路由守卫:针对某个路由写的安全守卫  
  app.all('*', async(req, res, next) => {
    if(req.url == '/user/login' || req.url == '/user/register') {
      next();
    } else if (req.session.LognUser) {
      let LongUser = req.session.LognUser
      // 校验用户信息
      const result = await db.table('user').find(LongUser.id);
      if(JSON.stringify(result) != "{}") {
        req.session.LognUser = result;
        next();
      } else {
        res.redirect('/user/login');
      }
    } else {
      res.redirect('/user/login');
    }
  })
  app.use(HomeRouter)
  //设置一个前缀 并挂载路由
  app.use('/user', UserRouter)
}

用户路由模块文件:users.js

var express = require('express');
const path = require('path')
// 引入用户控制器
const UserCtr = require(path.join(__dirname, "../controller/user"))

//创建路由模块
const UserRouter = express.Router()

//设置路由规则
UserRouter.get('/', UserCtr.index)
UserRouter.get('/register', UserCtr.register)
UserRouter.post('/register', UserCtr.registerpost)

module.exports = UserRouter;

注册路由模块app.js


// 引入总路由文件
var router = require('./routes/index.js');

// 通过 router 对象设置(挂载)全部路由
router(app);
powered by GitbookEdit Time: 2023-04-08 10:28:32