猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 > node >

koa路由和视图模块化

2018-08-14 09:42:20 作者:yxl 次阅读 node

1、相信很多刚使用koa开发的时候,都没注意封装模块的意识,都是实现功能就完事了,类似以下代码,路由都是写在app.js中,造成app.js 膨大,不好维护


下面介绍路由的模块化

1、首先,我们把前台、后台的模块分开    比如  /admin 是后台的模块   /  首页


front 是前台的路由 admin 是后台路由

我们从入口文件app.js看起

const Koa = require('koa'),
    router = require('koa-router')(),
    indexRouter = require('./routers/index');
const app = new Koa();
//前台路由
router.use(indexRouter);//这里引入前台路由
//后台路由
...
//启动路由
app.use(router.routes()).use(router.allowedMethods());
app.on('error', (err, ctx) => {
    console.error('server error', err, ctx)
});
app.listen(config.dev.port);
console.log('服务器已启动在3000端口');



index.js 是前台路由入口,具体代码如下

const router = require('koa-router')(),
    userRouter = require('./front/user');
router.get('/', async(ctx, next) => {
    await ctx.render('front/index');
})
router.use('/user', userRouter);//如果 如有是/user 的我就加载user路由模块 userRouter
module.exports = router.routes();


user路由模块的代码

const router = require('koa-router')();
router.get('/', async(ctx) => {
    ctx.body = '用户首页'
})
router.get('/add', async(ctx) => {
    ctx.body = '用户添加'
})
router.get('/about', async(ctx, next) => {
    await ctx.render('front/about');
})
module.exports = router.routes();

视图模块化类似,分front/admin两个文件夹进行文件划分

凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词:
0

网友评论