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 模板已经移除了旧的“纯前台模式”。开发时应把后端运行态视为默认组成部分:web / 小程序 / App 负责目标端渲染,server:start 负责真实的 Oak 后端运行、数据库访问、aspect、endpoint、watcher、timer 和 routine。

1. 生成领域代码

修改项目实体,或升级依赖模块实体产物后,先执行:

npm run make:domain

依赖模块实体会优先从 es/entities 读取,其次才是 lib/entitiessrc/entities。生产发布包不应要求发布 src

如果增删 Oak 依赖模块,还应执行:

npm run project:init
npm run make:dep

普通应用模板的 postinstall 已经会自动执行 project:init && make:domain && make:dep,但依赖发生变化时仍建议显式按这个顺序执行一次,避免领域类型仍引用旧的依赖实体。

2. Web 开发

最常用命令是:

npm run dev

它等价于同时运行:

npm run server:start
npm run start:web

start:web 只启动 web 目标端的 Vite 开发服务,默认端口是 3000。真正的后端服务由 server:start 启动,通常监听 3001。不要再把 start:web 理解成“前端自己跑完全部 Oak 逻辑”的旧前台模式。

3. 小程序开发

新应用先添加小程序 workspace:

oak-cli add mp wechatMp
npm install

小程序端启动命令是:

npm run start:mp

运行后用微信开发者工具打开 wechatMp/dist。如果页面依赖数据库、aspect、endpoint、watcher 或第三方接口,需要另开终端运行:

npm run server:start

当前模板不再提供 start:mp:server。小程序端和后端是两个独立进程。

4. App 开发

新应用先添加 React Native workspace:

oak-cli add rn native
npm install

React Native 端先启动 Metro:

npm run start:native:native

再按目标平台安装运行:

npm run run:android:native
npm run run:ios:native

生产构建使用:

npm run build:native:native:android
npm run build:native:native:ios

旧文档里的无 workspace 后缀 run:androidrun:iosrun:bundle 不是当前模板命令。原生 SDK、签名和渠道包仍由 React Native、Android Studio 与 Xcode 工程管理。

5. Desktop 开发

Tauri:

oak-cli add desktop desktop
npm install
npm run start:desktop:desktop

Electron:

oak-cli add desktop desktop-electron --runtime electron
npm install
npm run start:desktop:desktop-electron

Desktop 复用 Web 平台运行时,但通过 Tauri/Electron renderer metadata 区分应用。它仍需真实 Oak 后端;通常另开终端运行 npm run server:start。详细结构见多平台工作区

6. 后端开发

后端运行命令是:

npm run server:start

首次接入真实数据库前,先准备数据库配置并执行:

npm run build
npm run server:init

server:start 会启动真正的 Oak 后端运行态,包括 trigger、checker、aspect、endpoint、port、watcher、timer 和 routines/start

7. 清理缓存

如果 Vite、Babel 或依赖缓存导致页面表现异常,可以先执行:

npm run clean:cache

它只清理本地构建缓存,不替代 make:domainproject:initmake:dep