预加载

所谓的预加载技术就是在用户尚未触发页面跳转时,提前创建目标页面,这样当用户跳转时,就可以立即进行页面切换,节省创建新页面的时间,提升app使用体验。mui提供两种方式实现页面预加载。

方式一:通过mui.init方法中的preloadPages参数进行配置.

  1. mui.init({
  2. preloadPages:[
  3. {
  4. url:prelaod-page-url,
  5. id:preload-page-id,
  6. styles:{},//窗口参数
  7. extras:{},//自定义扩展参数
  8. subpages:[{},{}]//预加载页面的子页面
  9. }
  10. ],
  11. preloadLimit:5//预加载窗口数量限制(一旦超出,先进先出)默认不限制
  12. });

该种方案使用简单、可预加载多个页面,但不会返回预加载每个页面的引用,若要获得对应webview引用,还需要通过plus.webview.getWebviewById方式获得;另外,因为mui.init是异步执行,执行完mui.init方法后立即获得对应webview引用,可能会失败,例如如下代码:

  1. mui.init({
  2. preloadPages:[
  3. {
  4. url:'list.html',
  5. id:'list'
  6. }
  7. ]
  8. });
  9. var list = plus.webview.getWebviewByid('list');//这里可能返回空;

方式二:通过mui.preload方法预加载.

  1. var page = mui.preload({
  2. url:new-page-url,
  3. id:new-page-id,//默认使用当前页面的url作为id
  4. styles:{},//窗口参数
  5. extras:{}//自定义扩展参数
  6. });

通过mui.preload()方法预加载,可立即返回对应webview的引用,但一次仅能预加载一个页面;若需加载多个webview,则需多次调用mui.preload()方法;

如上两种方案,各有优劣,需根据具体业务场景灵活选择;