Koa源码分析(一) -- generator】的更多相关文章

Abstract 本系列是关于Koa框架的文章,目前关注版本是Koa v1.主要分为以下几个方面: 1. Koa源码分析(一) -- generator 2. Koa源码分析(二) -- co的实现 3. Koa源码分析(三) -- middleware机制的实现 Genetator函数 Generator函数是ES6提供的一种异步编程解决方案,其语法行为完全不同于传统函数. 详细解析可见阮一峰老师的<ECMAScript 6 入门 --- Generator> 语法 两大特征 functio…
Abstract 本系列是关于Koa框架的文章,目前关注版本是Koa v1.主要分为以下几个方面: Koa源码分析(一) -- generator Koa源码分析(二) -- co的实现 Koa源码分析(三) -- middleware机制的实现 Koa概括 Koa是基于generator与co之上的新一代中间件框架,它的优势主要集中在以下几个方面 中间件机制 封装了request/response, context对象 使用yield,方便异步编程进行流程控制 在忽略同步或者异步的情况下,使用…
Abstract 本系列是关于Koa框架的文章,目前关注版本是Koa v1.主要分为以下几个方面: Koa源码分析(一) -- generator Koa源码分析(二) -- co的实现 Koa源码分析(三) -- middleware机制的实现 co 大名鼎鼎的co是什么?它是TJ大神基于ES6的一些新特性开发的异步流程控制库,基于它所开发的koa被视为未来主流的web框架. koa基于co实现,而co又是使用了ES6的generator和promise特性.如果还不理解,可以查看阮一峰老师的…
本次分析的KOA版本是2.13.1,它非常轻量,诸如路由.模板等功能默认都不提供,需要自己引入相关的中间件. 源码的目录结构比较简单,主要分为3部分,__tests__,lib和docs,从名称中就可以了解到. __tests__是单元测试,lib是核心代码,docs是文档.在lib目录中只有4个文件. ├── __tests__ ------------------------ 单元测试 ├── docs ----------------------------- 文档 ├── lib ---…
最近项目要使用koa,所以提前学习一下,顺便看了koa框架的源码. 注:源码是koa2.x koa的源码很简洁,关键代码只有4个文件,当然还包括一些依赖npm包 const Koa = require('koa'); const app = new Koa(); app.use(async (ctx, next) => { await next(); ctx.type = 'text/html'; ctx.body = '<h1>Hello, koa2!</h2>'; });…
在上一篇中,主要分析了package.json和application.js文件,本文会分析剩下的几个文件. 一.context.js 在context.js中,会处理错误,cookie,JSON格式化等. 1)cookie 在处理cookie时,创建了一个Symbol类型的key,注意Symbol具有唯一性的特点,即 Symbol('context#cookies') === Symbol('context#cookies') 得到的是 false. const Cookies = requi…
koa是基于nodejs平台的下一代web开发框架,它是使用generator和promise,koa的中间件是一系列generator函数的对象.当对象被请求过来的时候,会依次经过各个中间件进行处理,当有yield next就跳到下一个中间件,当中间件没有 yield next执行的时候,然后就会逆序执行前面那些中间件剩下的逻辑代码,比如看如下的demo: const Koa = require('koa'); const app = new Koa(); app.use(async (ctx…
本文始发于我的个人博客,如需转载请注明出处. 为了更好的阅读体验,可以直接进去我的个人博客看. 前言 知识储备 阅读本文需要对Generator和Promise有一个基本的了解. 这里我简单地介绍一下两者的用法. Generator 关于Generator的用法,推荐MDN上面的解释function *函数,里面非常详细. 用一句话总结就是,generator函数是回调地狱的一种解决方案,它跟promise类似,但是却可以以同步的方式来书写代码,而避免了promise的链式调用. 它的执行过程在…
koa-convert最主要的作用是:将koa1包中使用的Generator函数转换成Koa2中的async函数.更准确的说是将Generator函数转换成使用co包装成的Promise对象.然后执行对应的代码.当然该包中也提供了back方法,也可以把koa2中的async函数转换成koa1包中的Generator函数. 首先我们来看下使用Koa1中使用Generator函数和Koa2中使用的async函数的demo代码如下: const Koa = require('koa'); const…
此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行.koa一个中间件框架,其提供的是一个架子,而几乎所有的功能都需要由第三方中间件完成,它只是node原生的http的一个封装,再加入中间件元素,koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手 Koa目前分为两个版本:koa 1.0和koa…