# uni.preloadPage(OBJECT)

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

平台差异说明

App-nvue HarmonyOS Next H5 微信小程序 支付宝小程序 百度小程序 抖音小程序、飞书小程序 QQ小程序 元服务 小红书小程序
√(2.7.12+) x √(2.7.12+) x x x x x x x
属性 类型 必填 说明
url string 预加载页面url
success Function 预加载成功完成回调
fail Function 预加载失败回调
complete 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 页面,执行页面预渲染,预载时触发生命周期 onLoadonReady,不触发 onShow
  2. 打开新页面时,url 完全相同(包含参数)时,优先使用预加载页面,触发生命周期 onShow
  3. tabbar页面,仅支持预加载尚未显示过的页面,否则返回 fail,提示 already exists
  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)

元服务
x

HarmonyOS Next 不支持

取消预载页面。

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