其它内容
前面几节介绍的,主要是 Oak 中最核心的“对象、组件、业务逻辑”三大部分。但真正把一个 Oak 应用写顺手,还需要再理解几组非常重要的基础概念:
- 上下文
context - 异常
exception - 权限
permission - 国际化
i18n - 前端图标库
OakIcon - 前后端配置
configuration
这些内容并不一定是你第一天就会大量手写的代码,但几乎会出现在 Oak 的每一个关键运行环节里。
为什么它们重要
上下文
Oak 中几乎所有后端逻辑,最终都落在某个 context 上执行。没有它,就没有事务、当前用户、root 身份、操作记录这些能力。
异常
Oak 不鼓励把错误都写成随意的 throw new Error(...)。框架定义了一整套异常体系,用来表达输入非法、权限不足、数据不可见、外部接口失败等不同语义,并且还能把必要的数据同步回前端缓存。
权限
Oak 的权限模型不是简单的“某个角色能访问某个页面”,而是围绕实体关系、对象路径、动作授权和用户关系来推导的。这是 Oak 和很多传统业务框架差异最大、也是最值得认真理解的一部分。
国际化
Oak 的 i18n 不是某个孤立前端插件,而是进入了整个项目和依赖模块的编译流程。页面、组件、模块、实体都可以把本地化资源统一编译进入运行时。
前端图标库
Oak 的前端图标库不是单纯在 React 页面里 import 一个图标组件,而是让页面配置、菜单配置、web 运行时和小程序编译都能复用同一套字符串图标名。OakIcon 负责运行时渲染,oak-cli 负责在编译时处理 web 按需加载和小程序 font 图标样式。
前后端配置
Oak 的配置文件并不是只服务某一端。src/configuration/access.ts 决定前端 connector 如何访问后端,src/configuration/server.ts 决定后端如何启动和暴露,页面和命名空间的 index.config.ts 又会进入 web 路由、菜单和访问控制生成流程。理解这些入口,才能把本地开发、预发部署、生产代理和页面权限排查清楚。
阅读这一节时的建议
这一节不需要你一开始死记所有细节,但最好先建立几个认识:
context是 Oak 运行时的载体;- 异常有明确语义,不只是字符串;
- 权限是数据化、可推导的;
- i18n 是编译期和运行时共同参与的一套机制;
- 图标配置要保持字符串化和可序列化,让
oak-cli能参与编译优化; - 前后端配置要分清网络访问、后端启动和页面访问控制三条线。
一旦把这些点想明白,后面再去看 Oak 项目的源码,就会顺畅很多。