1、koa简介

koa是express团队开发的一个更加轻量级的服务端开发框架,也是未来的趋势

2、安装

npm i -g koa-generator //全局安装koa脚手架

3、创建项目

koa2 项目名称

例如:koa2 -e koa2-learn //e的意思是使用ejs模板引擎,要不默认jade

将为我们创建一个koa-learn目录

接下来进入该目录,根据提示执行cnpm i

可能需要进行2次安装,看提示有无Pass --update-binary...

复制DEBUG...代码,运行koa

在package.json文件中可以修改启动方式:

npm run dev可以实现修改过程中的监听

端口默认运行在3000

4、

koa中的全局变量被称为global而不是window

5、koa异步,es6异步语法

async(param)=>{

await ... //只有在有声明async的方法内才准使用await

}

解决回调地狱,我们可以使用Promise,也可以使用await

举例分析:

const a=await A
const b=await B
const c=await C

上述代码为伪代码,ABC是不同的异步操作

在A未执行完成前不会执行下一行代码,以此类推

相当于用同步的写法完成了异步的过程

这里的ABC就是Promise对象,如果不是promise对象将自动转换,即Promise.resolve(data)

正确执行promise过程后的传给resolve的data将被赋值给a

6、koa2中间件

const+require引入中间件。通过app.use声明使用

引用时按顺序,使用时没有顺序

中间件都会被经过两次

一个简单的中间件编写:

function pv(ctx){
//ctx是一个全局对象,挂载了request和response的信息
global.console.log(ctx.path) module.export=function(){
return async function(ctx,next){
pv(ctx)
await next()//pv中间件处理完毕,准许移交下一个中间件处理
}
}
}

  使用时,在app.js中书写:

const pv=require('./middleware/koa-pv')

app.use(pv())

保证了两次交互。

8、koa-router 的用法:

根据子域名不同可配置不同的路由文件:

body属性返回相应的一些数据,可以返回多种类型:字符串,json等

render方法返回一个页面

const router =require('koa-router')

router.prefix('./user')

9、koa读写cookie

ctx.get/ctx.set

koa01的更多相关文章

随机推荐

  1. Notes_STL_List_And_Map

    //Description: 使用STL遇到的问题 //Create Date: 2019-07-08 09:19:15 //Author: channy Notes_STL_List_And_Map ...

  2. 以puppeteer抓取微指数,puppeteer基本示例,docker部署headless

    还是直接上代码 https://github.com/cclient/weizhishu-puppeteer 根据关键字获取微博指数 早期版本以常规的构造cookie,token,sign的访问api ...

  3. 104)PHP,目录树状输出

    使用特定数量的缩进达到树状目的! 核心问题,计算需要缩进的数量! 缩进级别,与递归调用深度保持一致.每当执行一级递归操作,所找到的文件的缩进级别+; 语法实现: 增加一个参数,表示当前函数调用的深度级 ...

  4. ssh 怎样以root用户登录

    #sudo vim /etc/ssh/sshd_config 找到并用#注释掉这行:PermitRootLogin prohibit-password 新建一行 添加:PermitRootLogin ...

  5. JAVA专业术语面试100问

    前言:面试技巧另外开篇再说,先上面试干货吧.Redis.消息队列.SQL不要走开,关注后更精彩! 1.面向对象的特点有哪些? 抽象.继承.封装.多态. 2.接口和抽象类有什么联系和区别? 3.重载和重 ...

  6. es6变量和函数的提升、暂时性死区?

    es6变量和函数的提升.暂时性死区?

  7. VB.Net制作-历朝通俗演义

    原先的回数,全是汉语数字,为此我先转换成了阿拉伯数字,遗憾的是阿拉伯数字100居然排在1和2之前!所以必须设置为3位数字才行!否则顺序是乱的. 以下是用VBA批量重命名的代码: Dim FSO As ...

  8. centos 6.* 修改时间

    一.查看Centos的时区和时间 1.使用date命令查看Centos时区 [root@VM_centos ~]# date -R Mon, 26 Mar 2018 19:14:03 +0800 2. ...

  9. mysql配置白名单

    1. 测试是否允许远程连接 $ telnet 192.168.1.8 3306 host 192.168.1.4 is not allowed to connect to this mysql ser ...

  10. Mysql————基本sql语句

    mysql中的基本语法有四种: 1.DDL语句:(用CREAT和DROP操作的语句) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP ...