koa2 - 項目構建 - [router路由,swig模板,轉換, 資源管理 ]

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")
});
const convert = require('koa-convert')
//靜態文件資源  最好是用convert先轉換下
app.use(convert(serve(path.join(__dirname,'./public'))));
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 

至於大型項目架構, 請看我的工程化構建的相關博文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章