koa1与koa2的区别:
koa1 是 Generator 友好型,
koa2 是 Async/Await 友好型;
准备工作
koa2 项目是比较轻量级的; 会有很多库引入,比较繁杂;
- 新建项目及项目初始化
- 安装koa2 依赖 npm install koa –save ; 我是[email protected]的版本; [email protected]的版本;
新建/app.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000,()=>{
console.log("sever started")
});
//建立简单服务, localhost:3000
开始完善项目架构
//app.js
const Koa = require('koa');
const app = new Koa();
const router = require('koa-simple-router');
app.use(router(_ => {
_.get('/', (ctx, next) => {
ctx.body = 'hello'
});
_.get('/index', (ctx, next) => {
ctx.body = {
data: 123
}
})
}));
app.listen(3000, () => {
console.log("sever started")
});
- koa1转koa2 的转换器 npm install koa-convert –save
usage:
const convert = require('koa-convert')
- 静态文件中间件 > npm install koa-static –save
usage:
//静态文件资源 最好是用convert先转换下
app.use(convert(serve(path.join(__dirname,'./public'))));
- 文件模板 >
- 模板引擎 [npm install koa-swig –save] (https://www.npmjs.com/package/koa-swig)
- 同时依赖 co 合成器 npm install co –save
usage:
const render = require('koa-swig');
const co = require('co');
const path = require('path');
//koa v2.x 支持的文件模板
app.context.render = co.wrap(render({
//设置简单的配置
root: path.join(__dirname, 'views'),//视口路径
autoescape: true,
cache: 'memory', // disable, set to false
ext: 'html',
writeBody: false
}));
//配置好了就可以挂在路由上使用了
_.get('/html',async (ctx, next) => {
ctx.body = await ctx.render('index');
})
项目run起来
//package.json
"start": "supervisor app.js"
//或者
"start": "node app.js"
//npm run start
至于大型项目架构, 请看我的
工程化构建
的相关博文