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. redis day02

    Redis -带过期时间的key  如何删除掉的? 在redis内部有个  过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...

  2. [LC] 207. Course Schedule

    There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prereq ...

  3. ASP.NET防止连续多次点击提交按钮 导致页面重复提交

    PS:实际使用中发现,第①种方法在火狐浏览中有时候有问题.第2种方法,在各个浏览器中都没问题 近做项目遇到了这样的情况: 公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手 ...

  4. Ubuntu中Unable to acquire the dpkg frontend lock解决方案

    根据百度总结三种方式:第三种解决了我的问题 1. ps -e|grep apt-get 结果:6965 ? 00:00:01 apt-get 执行:sudo kill 6965 #强制解锁,会删除文件 ...

  5. rsyslog与journal日志架构

    系统日志架构概述 在centos7系统中有两个日志服务,分别是传统的rsyslog和新添加的systemd-journal systemd-journal是一个改进型的日志管理服务,可以收集来自内核. ...

  6. getRandomInt getRandomString

    import java.util.concurrent.ThreadLocalRandom; private static final String AB = "ABCDEFGHIJKLMN ...

  7. 吴裕雄--天生自然python学习笔记:pandas模块强大的数据处理套件

    用 Python 进行数据分析处理,其中最炫酷的就属 Pa ndas 套件了 . 比如,如果我 们通过 Requests 及 Beautifulsoup 来抓取网页中的表格数据 , 需要进行较复 杂的 ...

  8. 吴裕雄--天生自然python学习笔记:python实现自动网页测试

    Python 可实现的网页测试的功能十分强大,甚至能通 过编程来实现让绝大多数的测试过程自动化. 这对很多开 发者来说,绝对是不可多得的神器. hash lib 纽件可以判别文件是否有过更改,只需要用 ...

  9. verilog求倒数-ROM实现方法

    采用线性逼近法结合32段线性查找表的方式来实现1/z的计算. 首先将1/32-1/64的定点化数据存放到ROM中,ROM中存放的是扩大了2^20 次方的数字四舍五入后的整数部分.n值越大,精度越大,误 ...

  10. XML的打包与解析

    XML的打包与解析 一.XML语言的特点       1.XML独立于任何编程语言,允许人们按接收者容易解析的方式,对复杂数据进行编码.先来看一个简单的XML格式的文件: [XML] 纯文本查看 复制 ...