Koa2
前言
这里列出我希望你在阅读文章前最好了解的东西:
es7 async/await 异步编程,es6 基本语法
nodejs
模块化方法
node.js 调试方法
- 使用vscode 可以用vscode 自身的调试,选择node.js 类型启动,选择js 配置启动。然后点击启动即可。
- 最新的调试办法,node.js 内置
- 1 环境
- node环境 8.x +
- chrome 60+
- 2 准备一段代码
/** * 测试resolve.js path 模块 */ const Koa=require('koa'); const path = require('path'); const app=new Koa(); const p=path.resolve('/src','../','view'); console.log(`p:${p}`); const dir=path.resolve(); debugger console.log(dir); app.use(async(ctx) =>{ ctx.body= p; }) app.listen(3000); console.log('[测试resolve.js] start-quick is starting at port 3000')
- 3 步骤:
(1) 命令行node --inspect resolve.js
(2) 打开chrome 输入http://localhost:3000
说明:绿色的按钮会打开一个新的debugger窗口,在那个窗口可以进行node.js 的调试
- 4 结束
- 1 环境
介绍
Koa2 是一个基于 nodejs 的一个小框架 ,github 地址 https://github.com/koajs/koa
目录结构
├── lib ----------------------------- 核心目录
│ ├── application.js -------------- 是整个koa2 的入口文件
│ ├── context.js ------------------ 处理应用上下文
│ ├── request.js ------------------ 处理http 请求
│ ├── response.js ----------------- 处理http 响应
├── package.json
特性
- 只提供封装好http上下文、请求、响应,以及基于async/await的中间件容器。
- 利用ES7的async/await的来处理传统回调嵌套问题和代替koa@1的generator,但是需要在node.js 7.x的harmony模式下才能支持async/await。
- 中间件只支持 async/await 封装的,如果要使用koa@1基于generator中间件,需要通过中间件koa-convert封装一下才能使用。
例子
- /util/render.js
const fs=require('fs');
function render(page){
return new Promise((resolve,reject)=>{
let viewUrl=`./views/${page}`;
fs.readFile(viewUrl,'binary',(err,data)=>{
if(err){
reject(err)
}
else{
resolve(data)
}
})
})
}
module.exports=render;
- /index.js
/**
* Description node.js 读取文件
* @authors fanjiongrong (fanjiongrong@tvflnet.com)
* @date 2018-10-29 11:33:19
* @version 1.0.0
*/
const Koa=require('koa')
const render =require( './util/render')
const app= new Koa()
app.use(async (ctx) =>{
let html = await render('demo1.html')
ctx.body= html
})
app.listen(3000)
console.log('[demo] file-render is starting at port 3000')
启动方式 node index.js
最后,这里有个简单易懂的文档,github Koa2 学习资料