Trust
Trust
  • 发布:2017-03-03 11:42
  • 更新:2019-01-08 11:11
  • 阅读:11085

【示例】双首页secondwebview配置的使用

分类:HTML5+

概念澄清

HBuilder8.0.1版更新说明App中有一条:
【重要】新增双首页配置(manifest->plus->secondwebview),加速首页为双webview模式时的应用启动速度。

以往流应用或5+App的首页,就是指的入口页面这一个页面,应用启动时native层立即创建这个launchWebview。
双首页配置下,入口页面依旧是launchWebview,但是还有一个secondWebview同时被创建。两个webview的操作由native层完成,大大提高了第二个webview的创建及加载速度。

举例说明

常规方案

以首页父子页面结构为例,子页面的创建在父页面(即首页)中完成。

var launch = plus.webview.getLaunchWebview();  
var home = plus.webview.create('home.html','home', {  
    top: '50px',  
    bottom: 0  
});  
launch.append(home);  

创建子页面这个操作,需要在首页加载完成后才开始。这样就会造成用户先看到首页部分的内容,然后才能看到子页面的内容。

双首页模式

依照更新说明,在manifest.json文件的plus节点下,新增secondwebview节点配置。

"plus": {  
    "secondwebview": {  
        "launch_path": "_www/home.html",  
        "id": "home"  
    }  
}  

这里同样支持secondWebview的styles等属性。

"plus": {  
    "secondwebview": {  
        "launch_path": "_www/home.html",  
        "id": "home",  
        "top": "50px",  
        "bottom": "0px"  
    }  
}  

然后,在launchWebview中建立父子关系即可。当然,如果非必要情况下,是不用建立父子关系的。

var _self = plus.webview.getLaunchWebview();  
var _second = plus.webview.getSecondWebview();  
_self.append(_second);  

在双首页模式下,父页面和子页面的内容是同时显示的,不会给用户造成加载延迟的感觉,大大增强了流应用及5+App的体验。

更多

更多关于HBuilder8.0的更新,以及manifest.json的配置,参考相关文章。
感谢80万开发者厚爱,HBuilder8.0正式发布 【内含重要性能优化新策略】
Manifest.json文档说明 manifest配置

最后附上一个简单的示例源码,解压后真机运行即可。

8 关注 分享
lam 若末lan 好冷 豆 abiu 小贼 阎宸晏 1***@qq.com

要回复文章请先登录注册

5***@qq.com

5***@qq.com

iphonex bottom 变了,怎么适配呢?
2019-01-08 11:11
小灬绿谷

小灬绿谷

请问wap2app能实现这个吗?
2018-11-24 13:41
小权

小权

回复 小权 :
似乎明白了,这个secondWebview是进入app时根据配置自动生成了,我关掉首页的同时就关掉了这个secondWebview。那我这种情况有没有办法解决?就是登录成功创建首页时,同时创建secondWebview
2017-11-22 11:31
小权

小权

有个问题:前提:当我进入首页index后会判断登录,如果登录正常,则加载secondWebview;如果登录过期,则close掉首页,创建登录页login。
问题来了,当close掉首页index进入创建的login,登录成功后重新创建index首页后,是获取不到secondWebview的(plus.webview.getSecondWebview()得到的是undefined)。
如何解决?
2017-11-22 11:11
abiu

abiu

回帖收藏。一直没搞明白 双首页的好处,现在知道了。
2017-08-31 18:03
wen如故i

wen如故i

有bug,加了之后,登录页的中打开注册页,忘记密码页,打开就自动返回了。。一开始没发现,几个星期后,发现,单独拿出那几个页面,就不会。。然后app上所有加载页面的注释了,就只有双首页,第二首页没有了,立马就不会了。
2017-05-08 15:09
Trust

Trust (作者)

回复 7***@qq.com :
请新开一个帖子,并上传测试demo,方便测试重现问题。
2017-04-07 15:22
7***@qq.com

7***@qq.com

根据文档修改之后,IOS出现BUG。 苹果5
在首页是Tab的模式下,加载首页和二级main.html
进入首页后,首页底部的tab看不见了,被main给挡住了
"secondwebview": {
"launch_path": "_www/main.html",
"id": "main",
"top": "0px",
"bottom": "50px"
}


var self = plus.webview.currentWebview();
for(var i = 0; i < 3; i++) {
var temp = {};
if(i==0){
var _second = plus.webview.getSecondWebview();
temp[subpages[i]] = "true";
mui.extend(aniShow, temp);
self.append(_second);
}else{
var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);
if(i > 0) {
sub.hide();
} else {
temp[subpages[i]] = "true";
mui.extend(aniShow, temp);
}
self.append(sub);
}
}
2017-04-07 15:18
CJH

CJH

回复 移动达人 :
请新开一个帖子,并上传测试demo,方便我们协助你排查发生了什么问题
2017-04-07 10:52
移动达人

移动达人

经过修改双首页成功,首页加载速度大大提高!但是,以前的下拉刷新调用失效,根本没有调用下拉事件函数。但是上拉却没问题,麻烦检查一下,谢谢!
2017-04-07 09:30