阅读时间:1 分钟
0 字
自动生成产物
Dux Uni 的核心思路是:
text
真实业务代码 => src/modules/*
自动生成运行时 => src/runtime/* / src/pages/* / src/pages.json执行 sync 后会生成什么
text
src/
pages.json
runtime/
generated/
modules.ts
router-pages.ts
router/
manifest.ts
page.ts
pages/
home/index.vue
auth/login.vueruntime/generated/modules.ts
ts
import { homeModule } from '../../modules/home/index.ts'
import { authModule } from '../../modules/auth/index.ts'
export const duxModules = [homeModule, authModule]作用:
- 收集模块入口
- 统一导出模块数组
runtime/generated/router-pages.ts
作用:
- 保存扫描后的页面 meta 列表
- 给 router manifest 提供输入
这些数据来自:
- 页面里的
<route lang="json"> - 文件路径推导
- 模块默认 layout
runtime/router/manifest.ts
作用:
- 合并
dux.config.ts和扫描到的页面 - 输出最终路由 manifest
最终会包含:
text
pages
pagesByName
pagesByModule
homePage
loginPage
tabBarPagesruntime/router/page.ts
作用:
- 提供
definePage() - 提供
usePageRuntime() - 在进入真实页面前执行页面运行时
src/pages/*
这里是自动生成的 uni 页面包装层。
text
真实页面: src/modules/feature/pages/secure.vue
生成页面: src/pages/feature/secure.vue包装页会:
text
1. 导入页面运行时
2. 导入真实模块页面
3. 导入 layout
4. 调用 definePage()
5. 调用 usePageRuntime()
6. ready 后再渲染真实页面src/pages.json
这个文件会根据最终 manifest 自动生成。
它会收敛:
text
easycom
globalStyle
pages
tabBar可以手改吗
原则上不要手改:
text
src/runtime/*
src/pages/*
src/pages.json如果结果不对,应该回头改:
src/modules/*<route lang="json">src/modules/*/index.tssrc/dux.config.ts
一个简单判断
text
改业务 => 回 modules
看结果 => 看 runtime / pages / pages.json