Koa 应用生成器以及 Koa 路由模块化
- Koa 应用生成器
- Koa 搭建模块化路由/层级路由
Koa 应用生成器
全局安装
npm install koa-generator -g
创建项目
koa koa_demo
安装依赖
cd koa_demo npm install
启动项目
npm start
Koa 搭建模块化路由/层级路由
目录
module
routes
statics
views
app.js
package.json
app.js
const Koa = require('koa')
const router = require('koa-router')()
const render = require('koa-art-template')
const path = require('path')
// 引入子路由
const admin = require('./routes/admin.js')
const api = require('./routes/api.js')
let app = new Koa()
// 配置 koa-art-template 模板引擎
render(app,{
path:path.join(__dirname,'views'),
extname:'.html',
debug:process.env.NODE_ENV !== 'production'
})
// 配置路由
router.get('/',(ctx)=>{
ctx.body = '这是一个首页'
})
//router.get('/admin',(ctx)=>{
//ctx.body = '这是一个后台管理页面'
//})
// 相当于启动路由 --> 配置层级路由/子路由
router.use('/admin',admin)
router.use('/api',api)
// 启动路由
app.use(router.routes()).use(router.allowedMethods())
app.listen(8008)
routes > admin.js
const router = require('koa-router')()
// 引入子路由
const user = require('/admin/user.js')
const focus = require('/admin/focus.js')
router.get('/',async (ctx)=>{
ctx.body = '后台管理系统首页'
})
//router.get('/user',async (ctx)=>{
//ctx.body = '后台用户管理'
//})
router.use('/user',user)
router.user('/focus',focus)
router.get('/news',async (ctx)=>{
ctx.body = '后台新闻管理'
})
module.exports = router.routes()
routes > api.js
const router = require('koa-router')()
router.get('/',async (ctx)=>{
ctx.body = "这是一个api"
})
router.get('/userList',async (ctx)=>{
ctx.body = {"titel":"这是一个用户接口api"}
})
router.get('/newsList',async (ctx)=>{
ctx.body = {"titel":"这是一个新闻接口api"}
})
module.exports = router.routes()
router > admin > user.js
const router = require('koa-router')()
router.get('/',async (ctx)=>{
//ctx.body = "用户首页"
await ctx.render('admin/user/index')
})
router.get('/add',async (ctx)=>{
//ctx.body = "增加用户"
await ctx.render('admin/user/add')
})
router.get('/edit',async (ctx)=>{
//ctx.body = "编辑用户"
await ctx.render('admin/user/edit')
})
module.exports = router.routes()
router > admin > focus.js
const router = require('koa-router')()
router.get('/',async (ctx)=>{
ctx.body = "轮播图管理首页"
})
router.get('/add',async (ctx)=>{
ctx.body = "增加轮播图"
})
router.get('/edit',async (ctx)=>{
ctx.body = "编辑轮播图"
})
module.exports = router.routes()
views > admin > user > index.html
<h2>这是用户列表</h2>
views > admin > user > add.html
<h2>增加用户</h2>
views > admin > user > edit.html
<h2>编辑用户</h2>
注意:前台和后台匹配路由的写法不一样

网友评论