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
至於大型項目架構, 請看我的
工程化構建
的相關博文