ctx.response.type = 'json';
app.use()用来加载中间件
app.use(ctx => { ctx.body = 'Hello Koa'; });
以"先进后出"(first-in-last-out)的顺序执行。
  1. 最外层的中间件首先执行。
  2. 调用next函数,把执行权交给下一个中间件。
  3. ...
  4. 最内层的中间件最后执行。
  5. 执行结束后,把执行权交回上一层的中间件。
  6. ...
  7. 最外层的中间件收回执行权之后,执行next函数后面的代码。
const one = (ctx, next) => { console.log('>> one'); next(); console.log('<< one'); } const two = (ctx, next) => {
console.log('>> two'); next(); console.log('<< two'); } const three = (ctx, next) => { console.log('>> three'); next(); console.log('<< three'); } app.use(one); app.use(two); app.use(three);
有如下输出。
>> one >> two >> three << three << two << one
上面都是同步的中间件,异步的需要加async
const main = async function (ctx, next) { ctx.response.type = 'html'; ctx.response.body = await fs.readFile('./demos/template.html', 'utf8'); }; app.use(main);
上面代码中,fs.readFile是一个异步操作,必须写成await fs.readFile(),然后中间件必须写成 async 函数。
上下文
请求
响应
async function doWork() { // 使用 async/await 的方式依次获取两个 JSON 文件 var result1 = await fetch('data1.json'); var result2 = await fetch('data2.json'); return { result1, result2 }; }
这个语法可以理解为:被 async 关键字标记的函数,可以对其使用 await 关键字来暂停函数的执行直到异步操作结束。
async function indexStep1(ctx, next) { //逻辑处理第一部分 await next(); } async function indexStep2(ctx, next) { //逻辑处理第二部分 await next(); } async function indexStep3(ctx, next) { //逻辑处理第三部分 await ctx.render('index'); } router.get('/index', indexStep1, indexStep2, indexStep3);

同时实现get和post
router.all
Create routes with multiple HTTP methods using router.register():
app.register('/', ['get', 'post'], function *(next) { // ... });
Create route for all methods using router.all():
app.all('/', function *(next) { // ... });
获取参数
eventCenter?data1=leijh
var data = ctx.request.query.data || null;

koa介绍的更多相关文章

  1. 深入浅出Koa

    深入浅出Koa(1):生成器和Thunk函数 Koa是个小而美的Node.js web框架,它由Express的原班人马打造的, 致力于以一种现代化开发的方式构建web应用. 通过这个系列,你将能够理 ...

  2. Koa2和相关资料

    koa2是什么我就不介绍,这里只是收集一些有用的资料,koa这里默认就指koa2了额. koa介绍 koa(GitHub) koa(npm) 文档 Usage Guide Error Handling ...

  3. Koa 框架介绍

    Node.js 是一个异步的世界,官方 API 支持的都是 callback 形式的异步编程模型,这 会带来许多问题,例如:callback 嵌套问题 ,异步函数中可能同步调用 callback 返回 ...

  4. koa 核心源码介绍

    链接来源 Request,Context,Response  在代码运行之前就已经存在的 Request和Response自身的方法会委托到Context中. Context源码片段 var dele ...

  5. koa 框架 介绍 -- 待续

    对比 express  更小  更健壮 解决繁琐的回调函数嵌套, 并极大地提升错误处理的效率 Koa 的核心设计思路是为中间件层 提供高级语法糖封装, (其实就是用了 ES6的生成器, 能中断函数的执 ...

  6. 一份ChatBot开源工程介绍(H5 + WX + KOA)

    vue-mpvue-ChatRobot https://github.com/fanqingsong/vue-mpvue-ChatRobot 前端 : Vue + Mpvue(支持移动端与小程序) ; ...

  7. Koa框架实践与中间件原理剖析

     最近尝试用了一下Koa,并在此记录一下使用心得. 注意:本文是以读者已经了解Generator和Promise为前提在写的,因为单单Generator和Promise都能够写一篇博文来讲解介绍了,所 ...

  8. 三HttpServletResponse对象介绍(1)

    转载自http://www.cnblogs.com/xdp-gacl/p/3789624.html Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象 ...

  9. 深入探析koa之异步回调处理篇

    在上一篇中我们梳理了koa当中中间件的洋葱模型执行原理,并实现了一个可以让洋葱模型自动跑起来的流程管理函数.这一篇,我们再来研究一下koa当中异步回调同步化写法的原理,同样的,我们也会实现一个管理函数 ...

随机推荐

  1. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  2. (算法)Hanoi Problem汉诺塔问题

    Problem: There are three poles and N disks where each disk is heaver than the next disk. In the init ...

  3. WCF 之 生成元数据和代理

    在WCF开发概述中讲解了手工方式的WCF应用,其实实际开发中使用更多的使用配置方式和元数据来实现WCF,下面我们来看一个具体的Demo,这个例子和WCF开发概述中使用的是同一个例子,只是实现方式不同, ...

  4. Qt Multimedia Backends(多媒体后端)翻译

    目录 MediaService plugins 媒体服务插件 不同后端支持的媒体播放器功能: 后端支持的摄像头(相机)功能 后端支持的音频解码功能 Audio plugins 音频插件 原文地址: Q ...

  5. Spring NamedParameterJdbcTemplate详解

    NamedParameterJdbcTemplate和JdbcTemplate功能基本差不多.使用方法也类型.下面具体看下代码. db.properties jdbc.user=root jdbc.p ...

  6. jquery 获取html <img /> 位置时出错问题

    如图所示,这样端口小图片都是通过jquery html()方法设置的(参数html就是画整个图片的html字符串),如图: 但是出现图片没有完全渲染完的问题,如图: 从图中可以看出在代码运行到断点的时 ...

  7. 【TP5.0】页面布局,引入公共的模版文件

    1.实例:如后台admin模块,公用一个header.html和footer.hml 2.模块结构: 3.使用方式: {include file="common/header"} ...

  8. 【转载】IIS6、IIS7、IIS7.5设置拒绝一组计算机(IP段)访问网站的方法

    IIS6设置方法: 1.打开IIS管理器,右键点击网站,选择“属性” 2.把标签切换到“目录安全性”,点击“IP地址和域名限制”的编辑按钮,如下图: IP地址和域名限制 3.选择“授权访问”,然后点击 ...

  9. idea 更换编辑器背景图片

    插件名称是:BackgroundImage, 安装后效果图

  10. atitit.激活一个窗口总结 swing java .net php

    atitit.激活一个窗口总结 1     激活窗口:鼠标激活vswindows消息激活 1.1      Web框架激活 2     退出激活窗口热键(dbg模式) 3     俩个窗口激活优先级 ...