Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

其它内容

前面几节介绍的,主要是 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 路由、菜单和访问控制生成流程。理解这些入口,才能把本地开发、预发部署、生产代理和页面权限排查清楚。

阅读这一节时的建议

这一节不需要你一开始死记所有细节,但最好先建立几个认识:

  1. context 是 Oak 运行时的载体;
  2. 异常有明确语义,不只是字符串;
  3. 权限是数据化、可推导的;
  4. i18n 是编译期和运行时共同参与的一套机制;
  5. 图标配置要保持字符串化和可序列化,让 oak-cli 能参与编译优化;
  6. 前后端配置要分清网络访问、后端启动和页面访问控制三条线。

一旦把这些点想明白,后面再去看 Oak 项目的源码,就会顺畅很多。