├── app.js├── app.json├── app.wxss├── packageA│ └── pages│ ├── cat│ └── dog├── packageB│ └── pages│ ├── apple│ └── banana├── pages│ ├── index│ └── logs└── utils
{"pages": ["pages/index", "pages/logs"],"subpackages": [{"root": "packageA","pages": ["pages/cat", "pages/dog"]},{"root": "packageB","name": "pack2","pages": ["pages/apple", "pages/banana"]}]}
subpackages
中,每个分包的配置有以下几项:subpackages
后,将按 subpackages
配置路径进行打包,subpackages
配置路径外的目录将被打包到 App(主包) 中;subpackage
的根目录不能是另外一个 subpackage
内的子目录;tabBar
页面必须在 app(主包)内。packageA
无法 require packageB
JS 文件,但可以 require app、自己 package 内的 JS 文件;packageA
无法 import packageB
的 template,但可以 require app、自己 package 内的 template;packageA
无法使用 packageB
的资源,但可以使用 App、自己 package 内的资源。subpackage
里面的路径放到 pages 中。├── app.js├── app.json├── app.wxss├── moduleA│ └── pages│ ├── rabbit│ └── squirrel├── moduleB│ └── pages│ ├── pear│ └── pineapple├── pages│ ├── index│ └── logs└── utils
app.json
的 subpackages
字段中对应的分包配置项中定义 independent
字段声明对应分包为独立分包。{"pages": ["pages/index", "pages/logs"],"subpackages": [{"root": "moduleA","pages": ["pages/rabbit", "pages/squirrel"]},{"root": "moduleB","pages": ["pages/pear", "pages/pineapple"],"independent": true}]}
App
并不一定被注册,因此 getApp() 也不一定可以获得 App 对象:undefined
。 当用户进入普通分包或主包内页面时,主包才会被下载,App 才会被注册。const app = getApp({allowDefault: true}) // {}app.data = 456app.global = {}
App({data: 123,other: 'hello'})console.log(getApp()) // {global: {}, data: 456, other: 'hello'}
onLaunch
和首次 onShow
会在从独立分包页面首次进入主包或其他普通分包页面时调用。wx.onAppShow
,wx.onAppHide
完成。App 上的其他事件可以使用 wx.onError,wx.onPageNotFound 监听。app.json
增加 preloadRule
配置来控制。{"pages": ["pages/index"],"subpackages": [{"root": "important","pages": ["index"]},{"root": "sub1","pages": ["index"]},{"name": "hello","root": "path/to","pages": ["index"]},{"root": "sub3","pages": ["index"]},{"root": "indep","pages": ["index"],"independent": true}],"preloadRule": {"pages/index": {"network": "all","packages": ["important"]},"sub1/index": {"packages": ["hello", "sub3"]},"sub3/index": {"packages": ["path/to"]},"indep/index": {"packages": ["__APP__"]}}}
字段 | 类型 | 必填 | 默认值 | 说明 |
packages | StringArray | 是 | 无 | 进入页面后预下载分包的 root 或 name。__APP__ 表示主包。 |
network | String | 否 | Wi-Fi | 在指定网络下预下载,可选值为: all:不限网络 Wi-Fi:仅 Wi-Fi 下预下载 |
本页内容是否解决了您的问题?