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 

至于大型项目架构, 请看我的工程化构建的相关博文

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