Koa

  • koa插件选择

    路由:koa-router
    表单解析:koa-bodyparser
    视图:koa-views、ejs
    session: koa-session-minimal、koa-mysql-session
    数据库引擎: mysql

    数据库设计

    用户表(users):id、name、pass
    文章表(posts):id、name、title、content、uic、moment、comments、pv
    评论表(comment):id、name、content、postid

    数据库初始化

    使用连接池连接数据库,每次查询完毕之后释放链接,可以将数据表的建立在mysql.js中完成,为每一次qu





  • 深入浅出 Koa2

    说在前面的话:本文针对对koa1非常了解并学习过源码或者阅读过我上篇koa文章的同学阅读~

    吸取之前的经验,本章用幽默的风格来分析又臭又硬的原理,我尽量用最通俗易懂的语言来描述复杂的逻辑。

    前几天koa发布了2.0版本。这几天找了个不忙的时间,赶紧阅读了2.0的文档和源码

    这次改动主要是中间件的部分。其他部分对于使用者来说没什么改动。

    阅读过我的上一篇文章的同学应该知道。koa内部主要有两个知识点,context(上下文)和middleware(中间件)两个部分

    所以总体来看,改动不算太大,我先把改动分个类

    • 使用
      • 中间件
    • 源码
      • 语法
      • 中间件

    使用上的改动

  • koa

    学习koa需要一些相关知识,有两个关键词

    • generator
    • promise

    本文主要针对koa的原理进行讨论,属于深度篇,并不会对koa的使用过多介绍。

    如果在阅读过程中,发现有哪些地方我写的不太清楚,不容易理解,希望能提出,我会参考建议并进行修改~~

    koa总体流程图

    让我们从一张图开始

    上图中,详细说明了koa从启动server之前,到接受请求在到响应请求的过程中,经历了哪些步骤。

    那我们按照时间线说起~

    启动前

    图中有三个蓝色的方块,分别代表三个静态类

    什么是静态类?这个是我自己给起的名,哈哈

    静态类就是程序运行前就存在的方法集合,动态类就是通过代码生成出的方法集合。额

  • Koa Style Guide

    用最合理的方式使用Koa

    目录

    • Flow-control-sync
    • Flow-control-async
    • Convert-Function
    • Namespace

    Flow-control-sync

    使用 yield 等待 generator 函数执行结果(包括但不限于中间件中的参数next)

    // bad
    function *middleware(next) {
      // ...stuff...
      yield next;
      // ...stuff...
    }
    
    // good
    function *middleware(next) {
      // ...stuf
  • Koa Style Guide

    用最合理的方式使用Koa

    目录

    • Flow-control-sync
    • Flow-control-async
    • Convert-Function
    • Namespace

    Flow-control-sync

    使用 yield 等待 generator 函数执行结果(包括但不限于中间件中的参数next)

    // bad
    function *middleware(next) {
      // ...stuff...
      yield next;
      // ...stuff...
    }
    
    // good
    function *middleware(next) {
      // ...stuf