1. 项目是做什么的?
这是一个基于Koa的 企业级Web应用框架 ,主要功能是:
-
提供API接口服务(给前端/APP调用)
-
渲染网页模板(生成HTML页面)
-
处理用户请求并返回数据 就像是一个"万能服务员",能同时处理:
-
数据请求(API)
-
页面展示(HTML)
-
文件下载(静态资源)
2. 执行顺序(简化版)
想象一个快递分拣中心的工作流程:
-
接收包裹 (请求进来)
-
安全检查 (中间件处理)
- 先检查签名对不对(apiSignVerify)
- 再检查参数格式(apiParamsVerify)
- 最后解析请求数据(bodyParser)
-
分派任务 (路由分发)
- 如果是 /api/xxx → 交给对应Controller处理
- 如果是 /view/xxx → 用模板引擎渲染HTML
-
干活儿 (业务处理)
- Controller调用Service获取数据
- Service从数据库/内存读取数据
-
打包发货 (返回结果)
A[请求] --> B{是API吗?} B -->|是| C[JSON数据] B -->|否| D[HTML页面]
3. 关键组件比喻
-
中间件 :像流水线上的质检员
- koa-static :处理图片/CSS/JS文件
- koa-nunjucks-2 :组装HTML页面
- bodyParser :解析用户提交的数据
-
路由 :像电话总机,决定找哪个部门
// 类似这样的配置:
"/api/project/list" => ProjectController.getList
"/view/:page" => ViewController.renderPage
Controller/Service :
- Controller:像部门经理(决定怎么处理请求)
- Service:像一线员工(实际干活的)
4. 举个实际例子
当访问 http://localhost:8080/view/page1 时:
- 请求先经过 koa-nunjucks-2 中间件
- 路由匹配到 ViewController.renderPage
- 读取 app/public/output/entry.page1.tpl 模板
- 注入数据生成HTML:
<input value="{{env}}"> → 变成 <input value="production">
5.返回完整的网页给浏览器