路由

@Router
主页文件 index.html
如果指定了静态资源,且有主页文件index.html,即使没有显式的声明根路由/,服务器也会引导并显式主页
如果主页文件不是index.html,需要显示主页时,必须显示的声明根路由/
路由模块化
通过express.Router()和Module.exports将路由独立到不同的js中,然后在主js导入require()并通过中间件的方式使用use()
建议创建单独的文件夹如router,存放路由模块文件
模块文件 food.js - 处理json数据并返回;可以增加对food的增删改查等业务路由
const fs = require('fs');
const express = require('express')
//MUST
const router = express.Router()

// 读取JSON数据方法1:同步sync,执行完才继续下一步,会阻塞工作流
const jsonStr = fs.readFileSync('./public/data/food.json', {
  encoding: 'utf8'
});
const food = JSON.parse(jsonStr);
//请求格式 url?page=1&pageSize=10

//定义路由
router.get('/food', (req, res) => {
  console.log(req.query);
  let [...arr] = food
  let start = (req.query.page - 1) * req.query.pageSize;
  let result = arr.splice(start, req.query.pageSize)
  res.setHeader('X-Total-Count', food.length);
  res.send(result);
});

//MUST
module.exports = router
主入口文件 index.js
//引入 - 注意路径
const routerFood = require('./router/food')

app.use(routerFood)
每个模块都可以有自己的根路由;为了更加精准,使用的时候,可以为不同的模块指定专有路由
主入口文件 index.js - 改进版
//引入 - 注意路径
const routerFood = require('./router/food')

app.use('/food', routerFood)
  .use('/order', routerOrder)