# koaServer **Repository Path**: VALR/koaServer ## Basic Information - **Project Name**: koaServer - **Description**: 基于koa2框架构建的中间层项目 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2018-05-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # koaServer #### 项目介绍 基于 koa2 框架构建的中间层项目 #### 软件架构 ![输入图片说明](https://gitee.com/uploads/images/2018/0523/141150_f65e9e9e_1384885.png "项目架构.png") #### 安装教程 1.npm install 2.npm start #### 使用说明 1. 在 controllers 目录下添加控制器文件用来处理对应的路由,格式如下 ``` const login = async function(ctx, next) { 。。。。。 }; module.exports = { 'GET/login': login }; ``` 导出时采用 请求方式+路由作为导出对象的键,值为对应的路由处理中间件函数,如上 # koa2 简介 1.什么是 koa2? koa2 是一个基于 nodejs 开发的轻量且高性能 web 框架,增加了对 ES7 async/await 支持 可用于搭建静态服务器,中间层等。 2.什么是中间件? 首先中间件是一个接收和响应请求的函数!!!它用于处理用户请求,然后给出相应的响应。因为它处于请求(requst)与响应(response)之间,因此称为中间件。 3.中间件级别 1)应用级别的中间件:所有的请求都会经过的中间件,写法如下: ``` app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; ctx.set('X-Response-Time', `${ms}ms`); }); ``` 2)路由级别中间件:只有对应路由才会执行的中间件,写法如下: ``` router.get('/login', async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; ctx.set('X-Response-Time', `${ms}ms`); }); ``` 4.koa2 的 context 每个 koa2 应用都提供一个 context 对象,每一次请求都会以 context 为原型创建一个 ctx 实例 我们可以在该对象挂载一些方法或者数据,可以让 ctx 调用。例如将全局请求封装挂载到 context ``` app.context.$http = http; ``` 那么我们在不同的路由处理文件就无需每次都导入 http,当我们需要的时候就可以用 ctx 发起请求,用法如下: ``` ctx.$http.get(); ```