阅读时间:1 分钟
0 字
应用生命周期
启动时可以先记住一句话:
text
main.ts => 安装
App.vue => 生命周期绑定
dux.ts => 创建应用
dux.config.ts=> 配置应用我应该改哪个文件
text
应用标题、首页、登录页、tabBar、主题 => dux.config.ts
request、authProvider、dataProvider => dux.ts
Pinia 插件、全局样式、Vue 安装 => main.ts
全局 Root、全局 Provider => App.vue
真实业务页面 => src/modules/*/pages启动流程图
mermaid
flowchart TD
A["dux.config.ts<br/>提供应用配置"] --> B["dux.ts<br/>createUni(...) 创建应用"]
B --> C["main.ts<br/>installUniApp(app, dux)"]
C --> D["App.vue<br/>setupUniAppLifecycle(dux)"]
D --> E["页面开始按模块运行"]改动定位图
mermaid
flowchart TD
Q["你现在要改什么?"]
Q --> A["标题 / 首页 / 登录页 / tabBar / 主题"]
Q --> B["request / auth / data / permission / socket"]
Q --> C["Pinia 插件 / 全局样式 / Vue 安装"]
Q --> D["全局 Root / Provider / 生命周期绑定"]
Q --> E["真实业务页面"]
A --> A1["dux.config.ts"]
B --> B1["dux.ts"]
C --> C1["main.ts"]
D --> D1["App.vue"]
E --> E1["src/modules/*"]main.ts
ts
import { createSSRApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import { dux, installUniApp } from './dux'
export function createApp() {
const app = createSSRApp(App)
const pinia = createPinia()
app.use(pinia) // 安装 Pinia
installUniApp(app, dux) // 安装 Dux Uni runtime
return {
app,
}
}这里主要做:
- 创建 Vue app
- 创建 Pinia
- 安装插件
- 安装
Dux Uni
App.vue
vue
<script setup lang="ts">
import { setupUniAppLifecycle } from '@duxweb/uni'
import { dux } from './dux'
setupUniAppLifecycle(dux) // 把 uni-app 生命周期绑定到 dux runtime
</script>这里主要做:
- 绑定 uni-app 生命周期
- 接全局 Root
- 接全局 Provider
dux.ts
ts
import { createUni, defineUniConfig } from '@duxweb/uni'
export const dux = createUni(defineUniConfig({
appName: 'starter',
}))这里主要做:
- 创建应用 runtime
- 接 request / auth / data / socket 等应用级能力
dux.config.ts
ts
import { defineDuxConfig } from '@duxweb/uni'
export default defineDuxConfig({
app: {
name: 'starter',
title: 'Dux Uni Starter',
},
router: {
home: 'home.index',
login: 'auth.login',
tabBar: ['home', 'feature', 'account'],
},
})这里主要做:
- 配置应用标题
- 配置首页、登录页、tabBar
- 配置 UI token 和 runtime 默认值
一个简单判断
text
改应用骨架 => dux.config.ts
改应用能力 => dux.ts
改安装逻辑 => main.ts
改全局宿主 => App.vue
改业务页面 => src/modules/*