preload-page.md 2.3 KB
Newer Older
Q
qiang 已提交
1 2 3 4 5 6
#### uni.preloadPage(OBJECT)

预加载页面,是一种性能优化技术。被预载的页面,在打开时速度更快。

**平台差异说明**

Q
qiang 已提交
7
|App-nvue|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|
Q
qiang 已提交
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√(2.7.12+)|√(2.7.12+)|x|x|x|x|x|


|属性|类型|必填|说明|
|:-:|:-:|:-:|:-:|
|url|string|是|预加载页面url|
|complete|Function|否|预加载成功完成回调|
|fail|Function|否|预加载失败回调|


#### H5 平台

预加载 /pages/test/test 对应的js文件,不执行页面预渲染逻辑
```
uni.preloadPage({url: "/pages/test/test"});
```

#### App-nvue 平台

预加载nvue页面 /pages/test/test
```
uni.preloadPage({url: "/pages/test/test"});
```

注意事项
1. App平台仅支持预加载 nvue 页面,执行页面预渲染,预载时触发生命周期 `onLoad``onReady`,不触发 `onShow`
2. 打开新页面时,url 完全相同(包含参数)时,优先使用预加载页面,触发生命周期 onShow
36
3. tabbar页面,仅支持预加载尚未显示过的页面,否则返回 fail,提示 already exists
Q
qiang 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
4. 同一时间,相同 url 仅 preloadPage 一次
5. 当同一个预载页面已被打开(在路由栈),再次打开相同url时,不再使用该预加载页面,而是打开新的非预载页面
6. `uni.reLanuch`, `uni.switchTab`, `uni.navigateBack`(含Android返回键) 切换页面时,预加载页面不会被销毁,仅触发生命周期 `onHide`
7. 在预载页面使用 `uni.redirectTo` 时,预加载页面会被销毁,触发生命周期 `onUnload`

示例
```
uni.preloadPage({url: "/pages/test/test"}); // 预加载 /pages/test/test 页面(仅触发onLoad,onReady)
uni.navigateTo({url: "/pages/test/test"}); // url匹配,跳转预加载页面(仅触发onShow)
uni.navigateTo({url: "/pages/test/test?a=b"}); // url不匹配,正常打开新页面
```

HBuilderX 2.7.12+的hello uni-app,在navigator示例和uni ui的日历示例中增加了页面预载示例。

#### uni.unPreloadPage(OBJECT)

取消预载页面。

1. 仅App-nvue支持
2. 当预载页面未被打开时,使用 `unPreloadPage`时会销毁该页面,触发生命周期 `onUnload`
3. 当预载页面已被打开时,使用 `unPreloadPage`时不销毁该页面,但该预加载页面不再继续存在,会随着路由变化而销毁