路由功能
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);