GX博客

分享个人 Full-Stack JavaScript 项目开发经验

快速搭建一个Koa项目

我们可以通过koa-generator模块快速生成一个简单的 Koa 项目。


  1. 全局安装 Koa 应用生成器

    npm install -g koa2-generator
  2. 生成指定项目目录,如 server:

    koa2 server
  3. 为项目安装依赖

    cd server
    yarn install
  4. 查看 package.json,可以知道它配置的基础模块:

    {
      "name": "server",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "start": "node bin/www",
        "dev": "./node_modules/.bin/nodemon bin/www",
        "prd": "pm2 start bin/www",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "dependencies": {
        "debug": "^2.6.3",
        "koa": "^2.2.0",
        "koa-bodyparser": "^3.2.0",
        "koa-convert": "^1.2.0",
        "koa-json": "^2.0.2",
        "koa-logger": "^2.0.1",
        "koa-onerror": "^1.2.1",
        "koa-router": "^7.1.1",
        "koa-static": "^3.0.0",
        "koa-views": "^5.2.1",
        "pug": "^2.0.0-rc.1"
      },
      "devDependencies": {
        "nodemon": "^1.8.1"
      }
    }

    在 package.json 中配置了一些启动脚本,如 start、dev 等。这样我们可以使用 npm run start 或 npm run dev 启动项目。另外是一些依赖模块和开发依赖。

  • debug:

    基于 node 核心调试技术的小型调试实用工具。以 Windows 下 CMD 设置为例:

    set DEBUG=*,-not_this & npm run start

    首先设置了环境变量 DEBUG,除 not_this 外的其它。然后运行项目。在创建项目的 bin/www 启动文件中,我们可以看到:

    var debug = require('debug')('demo:server')
    // ...
    debug('Listening on ' + bind);

    'demo:server' 为 DEBUG 的命名空间,与环境变量对应。显示指定命名空间下的调试信息,可以这样设置:

    set DEBUG=demo:server
  • koa:

    koa 核心模块,不包含任何中间件。

  • koa-bodyparser:

    请求体解释中间件。如果没有内容,返回一个空对象 { }。默认值如下:

    app.use(bodyparser({
        enableTypes: ['json', 'form'],
        encode: 'utf-8',
        formLimit: '56kb',
        jsonLimit: '1mb',
        strict: true
    }));

    详细请查看 koa-bodyparser 的使用说明。

  • koa-convert:

    koa 0.x & 1.x 的 generator 中间件和 2.x 的 promise 中间件之间的转换模块。

  • koa-json:

    格式化 JSON 响应的中间件,也负责将 node 的对象转换成二进制流。它的参数如下:

    app.use(json({
        pretty: false,
        param: 'pretty',
        spaces: 2
    }));

    参数 pretty 设置是否格式化响应 JSON 数据。当 pretty 参数为 false,设置参数 param,当请求路径带有该查询字符串时,如 /?pretty, 会格式化响应 JSON。参数 spaces 用于设置格式化时缩进使用空格数,有效值为1至10,默认为2。(在接口数据调试时使用会较多。)

  • koa-logger:

    开发风格的日志中间件,让控制台自动输出请求和响应的基本信息。(应放在所有路由中间件之前,生产环境下关闭。)

    --> GET / 200 960ms 1.9kb
    <-- GET /users
  • koa-onerror:

    错误处理模块。自动将错误的状态码和头部作为响应的状态码和头部。它默认会渲染一个模板 html 作为响应,在开发环境下还会带有错误信息。它允许你重写自己的错误响应。如发生错误时渲染路径为 ./views/50x.html 的自定义(swig)模板:

    onerror(app, {
        template: './views/50x.html'
    });

    详细请查看 koa-onerror 的使用说明。(如果你使用了 nginx 代理的错误拦截,那么只需要确保相应的状态码正确即可。)

  • koa-router:

    路由中间件。(在构建的项目中可以看到,在路由中直接响应客服端的请求。如果你不想路由变得过于复杂,可以再分出一层控制器。业务逻辑在控制器中完成,路由仅仅作为控制器的导向。)

  • koa-static:

    静态文件服务中间件。(如果你有 nginx 作为静态文件的代理,可以去掉这模块。)

  • koa-views:

    模板渲染中间件。(也可以直接使用自己的模板引擎中间件。)

  • pug:

    服务器端模板引擎 pug,由 jade 改名。(根据项目需求,可以使用如 handlebars 等其它模板引擎。)

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_6.html