express 路由规划
-
概述(个人经验):
我们在设计网站的时候,主要分为两大块:前台、后台;两大块是由很多小模块组成,如淘宝网站前台,它是由用户模块、商品模块、购物车模块等等,如果我们采用express框架去实现各种url,我们在他的程序入口app.js中去实现url,这个文件是非常臃肿的。这个时候我们需要拆分路由。不同的模块干不同的事情。 -
步骤
1、在router目录下新建路由入口文件mainRouter.js和 admin、home文件夹(admin文件夹下面放的都是关于后台路由的模块,home目录下面放的都是前台路由的模块)
var express = require('express');
var router = express.Router();
var app = express();
var adminRouter = require('./admin/index') //后端
var homeRouter = require('./home/index') //前端
//设置跨域
app.all('*', (req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers:content-type");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header('Access-Control-Allow-Credentials: true');
res.header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
next();
});
router.use('/', adminRouter)
router.use('/', homeRouter)
module.exports = router;
2、在admin和home文件夹下新建所需的模块(manage.js、user.js等)
// user.js
var express = require('express');
var router = express.Router();
router.get('/api/admin/user', function (req, res) {
res.send('用户模块')
})
module.exports = router;
3、将前台、或后台所需的模块都引入到index.js中
var express = require('express');
var router = express.Router();
var user = require('./user')
var manage = require('./manage')
// 挂载模块
router.use('/', user)
router.use('/', manage)
module.exports = router;
4、在app.js中引入admin模块
// 引入模块
var mainRouter= require('./router/mainRouter')
// 使用
app.use('/', mainRouter)
5、如果需要动态路由
app.get('/user/:id', function (req, res) {
console.log(req.params)
})