const app = express();
const memberRouter = require('./member.router')
const skuRouter = require('./sku.router')
//注册路由
app.use('/member',memberRouter); // memer/list
app.use('/sku',skuRouter); //sku/list
#express 路由是使用
const express = require('express')
const router = express.Router();
//router.[method] // get/post
router.get('/lsit',(req,res)=>{
res.josn({
list:[
{id:0001,
name:'李四'
}
]
})
})
module.exprot = router
app.use('/demo',(,req,res)=>{
res.json({
message:'from use demo',
method:req.method
})
})
//添加请求路径
app.use('/demo',(,req,res)=>{
res.json({
message:'from use demo',
method:req.method,
uri:req.path
})
})
// sku.js
const express = require('express')
const router = express.Router()
router.get('/list', (req, res)=>{
res.json({
list:[{id: 1, name:'鞋子', price:100}]
})
})
module.export = router
// app.js
const express = require('express')
const app = express()
const skuRouter = require('./sku.js')
app.use('/sku', skuRouter) // 由于sku.js定义的路由(接口)是/list,很可能有重复的/list,所以用/sku去创建一个命名空间,简单理解成去对应的文件夹找文件
app.listen(3000, ()=>{console.log('启动成功')})
注册路由,使用use
express的router继承至express实例,所以all,use等都可以用,也可一层层嵌套路由,但不建议太深
app.use('/demo',()=>{})相当于app.all('/demo',()=>{}),app.use(()=>{})相当于app.all('*',()=>{})
如何做路由的拆分
member
sku
order
express.Router
路由拆分:
就是把入口文件(app.js 或者 index.js)里的模块(路由,接口api)给拆分到router目录下不同文件里,然后通过app.use注册进来,这样有助于后期维护。
1.新建一个router目录,根据项目在目录中创建对应路由文件。
在路由文件中(比如:member-router.js中):
// 1.首先引入express, const express= require('express'); // 2.然后创建router对象, const router = express.Router(); // router 就相当于app子对象,与app包含的API是相同的 。包含了method,use和all 等API。 // 具体逻辑 router.get('/list',(req,res)=>{ xxxx; }) // 3.最后通过module.exports 导出。 module.exports = router;
2.在app入口文件引入路由并注册。
// 引入 const memberRouter = require('./router/member-router'); // 注册 app.use('member',memberRouter); //设置路由路径,有助于区分。(相当于命名空间)
//app.router.js
const express = require('express') ;
const router = express.Router();
router.get('/list',(req,res)=>{
res.json({
msg:'test router'
})
})
module.exports = router;
const express = require('express') ;
const appRouter = require('./app.router') ; //app.router.js
const moreRouter = require('./app.moreRouter') ; //app.moreRouter.js
const app = express();
app.use('/main',appRouter) //http://127.0.0.1:3000/main/list
app.use('/more',moreRouter) //http://127.0.0.1:3000/more/list
app.listen(3000, ()=>console.log('please open 3000 port'))
//use的第一个参数变成了命名空间,后面都是/list
app.use('/member',memberRouter) 实际请求的是 /member/list
注册成员路由的写法
const memberRouter= require('./member.router')
app.use(memberRouter)
路由拆分,成员路由文件的写法
常用引入模块和导出模块的方法
1ES6中export和import
导出文件使用 export 或者 export default 导出文件
使用import 引入文件
2.CommonJS
导出文件:使用 module.exports 导出文件
引入文件: require(‘文件路径,如果没有路径,默认从node_modules文件中查找’) 引入文件
node
例子
api.get("/name/:id",(req,res)=>{
let {id} = req.params //:id 是 params 中获取
}
api.get("/name",(req,res)=>{
let {id} = req.query // ?id=2 是 query 中获取
}
.all .use路由例子