项目目录结构
一个典型的Oak项目的主要目录结构如下:
- src
- aspects
- assets
- checkers
- components
- configuration
- context
- data
- endpoints
- entities
- features
- locales
- pages
- ports
- routines
- timers
- triggers
- watchers
- lib
- web
- wechatMp(按需添加)
- native(按需添加)
- desktop / desktop-electron(按需添加)
- oak.config.json
- oak.config.ts
- tsconfig.lib.json
- tsconfig.es.json
- tsconfig
- paths.lib.json
- paths.es.json
- src目录:存放项目主要的业务逻辑代码。目录按Oak的各种概念又分成多个子目录,关于src下面各种概念的介绍,在本章节将逐一对之进行介绍
- lib目录:存放项目编译后的js文件
- web目录:存放项目在web端的入口文件和路由文件等
- wechatMp目录:存放项目小程序端的入口文件和各种配置文件
- native目录:存放项目 App 端的入口文件和路由文件等,以及 iOS / Android 层的项目代码
- desktop目录:存放 Tauri 或 Electron 的 Web renderer、原生宿主配置和 Desktop namespace。目录名可自定义
当前应用创建默认只有 web workspace。其它平台使用 oak-cli add mp|rn|desktop 添加,因此真实项目不一定同时存在上述所有目录。每个平台 workspace 有自己的 tsconfig.json,共享业务源码使用根 tsconfig.lib.json、tsconfig.es.json 和 src/tsconfig.json。
项目开发
开发一个应用系统,主要编写的代码是在src的以下的目录当中。每个目录的含义和如何编写,我们将在本章的各节按照先后顺序分别介绍。
如果是开发 web 应用,在 web 目录下您还需要编写:
web/src/app/namespaces下面的各 namespace 配置及布局web/src/app/components下面被 namespace 引用的公共组件(如整个网站的 header/footer 等)web/src/app/routers下面的 web 路由汇总
如果是开发小程序,在 wechatMp 目录下您还需要编写:
wechatMp/src/app.ts、wechatMp/src/app.less全局事件处理和样式wechatMp/mp.config.ts小程序基础配置wechatMp/package.config.ts页面和分包配置wechatMp/src/sitemap.json小程序 sitemap 配置
如果是开发 App,在 native 目录下您还需要编写:
native/App.tsx、native/index.tsx全局事件处理和插件加载native/router/index.tsApp 路由配置
如果是开发 Desktop,在对应 workspace 下主要维护:
src/index.tsx和src/app/namespaces/desktop的桌面壳与 namespace- Tauri 的
src-tauri,或 Electron 的electron、electron-builder.yml .oak-desktop.json中由 CLI 生成的 runtime 与稳定identifyId
共享业务页面仍放在根 src/pages,通过 render.desktop.tsx、操作系统 render 或 web.pc.tsx / web.tsx 回退参与 Desktop 路由。