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项目的主要目录结构如下:

- 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.jsontsconfig.es.jsonsrc/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.tswechatMp/src/app.less 全局事件处理和样式
  • wechatMp/mp.config.ts 小程序基础配置
  • wechatMp/package.config.ts 页面和分包配置
  • wechatMp/src/sitemap.json 小程序 sitemap 配置

如果是开发 App,在 native 目录下您还需要编写:

  • native/App.tsxnative/index.tsx 全局事件处理和插件加载
  • native/router/index.ts App 路由配置

如果是开发 Desktop,在对应 workspace 下主要维护:

  • src/index.tsxsrc/app/namespaces/desktop 的桌面壳与 namespace
  • Tauri 的 src-tauri,或 Electron 的 electronelectron-builder.yml
  • .oak-desktop.json 中由 CLI 生成的 runtime 与稳定 identifyId

共享业务页面仍放在根 src/pages,通过 render.desktop.tsx、操作系统 render 或 web.pc.tsx / web.tsx 回退参与 Desktop 路由。