Koa-booster 是我弄的一个基于koajs的框架,辅助了koa的开发效率。这里我提供了框架和脚手架。koa-booster是框架,koa-booster-cli是脚手架。
目录
内容
脚手架
Koa-booster module give you a better experience in developing with the sample thought of Koa: pure, clean, and strong enough to extend whatever you want.
-
usage
- Step 1
npm i -g koa-booster-cli
- Step 2
koa-booster create {projectName} //or you can do it either mkdir {projectName} && cd {projectName} koa-booster create .
- Step 3
cd {projectName} && npm i npm run start
- Step 1
- Alias:
- koa-booster:
kb
- create:
c
- generate:
g
koa-booster create {projectName}
or(RIP Kobe Bryant)
kb c {projectName}
kb generate {moduleName}
kb g {moduleName}
- koa-booster:
- Cli List
- kb create {projectName}
kb create app1 kb c app1
- kb generate {moduleName}
moduleName include: router, controller, service, utils, config, middlewares
kb generate controller books kb g service books kb g config books
- kb create {projectName}
- Related Doc koa-booster
框架说明
- Usage
- install koa
- install koa-booster
- init in App.js
const Koa = require('koa') const app = new Koa() module.exports = require('koa-boost')(app)
- Options
module.exports = require('koa-boost)(app, { //HOST 可选 host: '127.0.0.1', //PORT 可选 port: 3001, //环境变量,决定配置变量的取值 可选 env: 'test', //项目路径, 可选 baseDir: __dirname, //可以指定服务启动文件的路径 //中间件 可选 middlewares: app=>[ require('koa-static')('public', { maxage: 1000 * 60 * 30 } ), require('koa-body')(), require('koa-session')({ store : null, key: app.config.key },app), require('./middlewares/m1')({name:'rename'}), require('./middlewares/m2')(), ], //挂载路由之后再挂载的中间件 可选 middlewaresAfterRouter: app=>[] })
- Structure
- router 路由
- controller 控制器
- service 数据查询
- middlewares 中间件
- utils 工具模块
- config 配置
- app.js
-
App
router, controller, service, utils, config
app.{模块名称}.{方法名}()
app.{模块名称}.{变量名}
-
Context
controller, service, utils, config
ctx.{模块名称}.{方法名}()
ctx.{模块名称}.{变量名}
- Router示例
-
/router/index.js index.js会对应为服务根路由: /
-
/router/demo.js demo.js会对应服务路由: /demo
module.exports = (app) =>{ const { router, controller, middlewares } = app router.get('/', controller.demo.t1 ) router.get('/class/:id', middlewares.m1({name: 200}), controller.demo.t2 ) router.post('/classmate/:name', controller.demo.t3 ) }
-
- Controller示例
module.exports = { async t1(ctx){ let resp = await ctx.service.demo.t1() ctx.body = { data: resp, h1: ctx.h1, h2: ctx.h2, h3: ctx.h3 } }, t2(ctx){ ctx.body = { data: 'classId: '+ctx.params.id } }, }; 或传入APP module.exports = (app)=>({ async t1(ctx){ let data = await ctx.service.demo.t1() ctx.body = { data: data, h1: ctx.h1 + ": add 5+6 : " + ctx.utils.tool.add(5,6), h2: ctx.h2 + ": add 2+3 : " + ctx.utils.plus(2,3), h3: ctx.h3 } } })
- Service示例
module.exports = { t1: ()=>{ let d = 888 return d } } 或传入APP module.exports = (app)=>({ t1(){ let d = app.config.number * 100 return d }, t2(params){ return app.config.knex.from('note').select(["id","name"]).limit(params.size) }, t3(){return 98} })
- Utils示例
module.exports = { index: (a,b)=>{return a+b} } 或传入APP module.exports = (app)=>(a,b)=>{ return a+b+app.config.number } module.exports = (app)=>({ add(a,b){ return a+b+app.config.number }, minus(a,b){ return a-b-app.config.number } })
- Config示例
- config.js 默认配置文件
- config.{env}.js 当前环境配置文件(会与默认配置文件合并生成最终config)
module.exports = { keys: "key1", rules: require('./rules'), //内容太多,独立一个文件 number: 100 }
- Middlewares示例
module.exports = (options)=>{ return async (ctx, next)=>{ ctx.h1='h1:'+ options.name await next() } }
0 条评论