koa2的安装和配置修改以及aysnc/await语法
koa2也是处理服务器端的一个框架,但是在koa2中其路由并没有和express一样将路由整合在中间件当中,两者是分离开的。另外对于koa2中的一大特色就是koa中并没有req与res,在koa2中是将这两部分整合在一起为ctx,这样做可能是为了给不熟悉res,res的人说比较友好。另外在koa2中其是支持aysnc/await语法,有关函数的处理都是使用这种异步请求的方式。koa2是基于aysnc/await开发的一种框架,在node8.0以上才支持aysnc/await语法。因此接下来就来介绍aysnc/await语法。
aysnc/await语法及其使用形式
在这里通过文件流的处理对aysnc/await语法进行说明,再来回顾下文件流的相关信息,首先需要fs和path,然后创建getFileContent函数给其参数值传入文件名,最后在其内部创建以过Promise对象,然后再通过path.resolve()去获取到文件的路径,最后通过fs.readFile(通过path获取到的文件名,(err,data)=>{}),输出结果,并且返回这个promise对象即可。封装的方法如下:
const fs = require('fs'); const path = require('path');
function getFileContent(filename){
const promise = new Promise((resolve, reject) => {
const getFullFilename = path.resolve(__dirname,'files', fillename);
fs.readFile(getFullFilename ,(err , data) => {
if(err){
console.error(err);
}
resolve(
JSON.stringify(data)
)
})
})
return promise;
}
当调用这个方法时,使用aysnc/await语法来完成整个过程的异步调用。具体的调用方式如下:
下面部分的代码有关于aysnc await语法部分,下面的这种获取方式是使用了一个同步的写法
// async await语法 与promise套用
async function readFileData() {
// 返回的是一个Promise对象
//同步写法
try {
const aData = await getFileContent('a.json');
console.log('a data ', aData);
const bData = await getFileContent('b.json');
console.log('b data ', bData);
const cData = await getFileContent('c.json');
console.log('c data ', cData);
}catch(err){
console.error(err);
}
}
readFileData();
下面的这种获取方式是使用异步的写法
//异步写法
async function readAData(){
const aData = await getFileContent('a.json');
return aData;
}
async function test(){
const Data = await readAData();
console.log('a data ', Data );
}
test();
对于aysnc/await语法,需要明白的就是以下的四点:
1. await 后面可以追加 promise 对象, 获取resolve的值
2. await 必须包裹在aysnc函数当中
3. async 函数执行后返回的结果也是一个 promise 对象
4. try catch 可以捕捉到reject中的信息
koa2安装与配置文件的更改
1. 使用npm install koa-generator 2. koa2 koa2_blog 3.转到koa2_blog目录 cd koa2_blog 4. npm install 安装脚手架自带的依赖包
配置更改: 使用cross-env 与nodemon去检测环境的更改
在dev中添加cross-env NODE_DEV=dev 添加后dev中的配置如下:
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www"
同理添加cross-env NODE_DEV=production ,添加后prd中的配置如下:
"prd": "cross-env NODE_ENV=production pm2 start bin/www"
koa2中配置文件的介绍:
介绍app.js文件夹中的各个插件
1. views = require('koa-views')监听视图层中的信息
2. json = require('koa-json') 有关于json数据的处理
3. onerror = require('koa-onerroe') 对于error中错误信息的处理
4. bodyparser = require('koa-bodyparser') 对于body部分的参数处理
5. logger = require('koa-logger') 日志部分相关信息处理