Koa是一个自由而灵活的后端框架,非常适合个人的项目开发,在开发时,一般会用Koa-generator应用生成器生成一个初始化项目,这个应用生成器主要定义了一些文件夹,并且将路由实现了模块化,其实我们也可以自定义一个应用生成器,便于自行扩展。
1. 自定义文件夹
1. module文件夹;
主要用来存放项目开发中用到的一些公共模块。
2. statics文件夹;
主要用来存放项目开发中存放的静态文件,根据静态文件分类,又可以添加一些子文件夹,如images用于存放图片,css文件夹用于存放样式文件,js文件夹用于存放前端的一些交互。
3. views文件夹;
主要用来存放渲染的前端模板文件,根据项目需要,可以添加一些子文件夹,如public文件夹用于存放多个页面的公共头部和尾部。
2. 路由模块化
首先在app.js里引入预定义的模块化子路由,并将它与访问的路由地址对应绑定。
const Koa = require('koa');
const router = require('koa-router')();
const render = require('koa-art-template');
const path = require('path');
const app = new Koa();
render(app, {
root: path.join(__dirname, 'view'),
extname: '.html',
debug: process.env.NODE_ENV !== 'production'
});
// 1.引入模块化的子路由
var admin = require('./routes/admin.js');
var api = require('./routes/api.js');
// 2.绑定路由
router.use('/admin', admin);
router.use('/api', api);
router.get('/', (ctx) => {
ctx.body = "这是一个首页"
});
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(8008);
定义上面代码引入的子路由,以admin为例,由于amin代表的是一个后台管理系统的路由,所会存在很多的接口,所以可以再拆分一些子路由。
var router = require('koa-router')();
// 3.引入子路由
var user = require('./admin/user.js');
var focus = require('./admin/focus.js');
// 4.绑定子路由
router.use('/user', user);
router.use('/focus', focus);
router.get('/', (ctx) => {
ctx.body = '这是后台管理系统首页';
});
module.exports = router.routes();
以下是admin子路由user的定义,包含增、删、改、查,其实所有的接口都是这些操作。
var router = require('koa-router')();
router.get('/', (ctx) => {
ctx.body = '用户首页'
});
router.get('/add', (ctx) => {
ctx.body = '用户增加'
});
router.get('/edit', (ctx) => {
ctx.body = '编辑用户'
});
router.get('/delete', (ctx) => {
ctx.body = '删除用户'
});
module.exports= router.routes();