编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

hbuilder 开发APP填坑经验(hbuilderapp开发实例)

wxchong 2024-08-07 02:12:30 开源技术 42 ℃ 0 评论

hbuilder中进行窗口管理有2种方式,一种是用了mui框架,可以用mui提供的管理方式,都封装好了。

还有一种是没有用mui,可以直接通过最底层的plus.webview来管理窗口的操作。

官方文档地址:http://www.dcloud.io/docs/api/zh_cn/webview.html

我们创建一个H5+的项目,在common.js中默认有对窗口管理的代码,可以直接使用。

在使用的过程中我遇到了下面的问题:

1,在APP下面有一个toolbar,目前每次点击一个按钮都是通过webview创建一个新的view,view中去加载网页(我们的功能实现都是通过h5的方式嵌入到app中)

common.js提供的方法源码如下:

我们直接调用clicked('http://cxytiandi.com',true)就可以打开猿天地的首页,APP中toolbar对应的几个模块的主页肯定会来回切换的,导致每次切换都需要重新渲染,我通过改造clicked方法来实现下面的需求:

  • 如果页面对应的view没创建,就创建新的

  • 如果页面对应的view已经存在,就直接打开已经存在的

直接上改造后的代码:

通过在ws对象中加一个createNew参数来决定是否要创建新的view,如果配置为false的话,就通过plus.webview.getWebviewById去查找之前有没有创建过,有就直接显示,不用创建了,使用代码如下:

clicked('http://cxytiandi.com',true, false,{createNew:false});

2,通过webview打开的页面,可以通过back()来返回到上个页面,源码如下:

有些场景,比如在我的主页点击关注的用户,进入用户主页,在用户主页取消关注,然后回退到我的主页中,回退相当于重新打开之前开启过的view,这个时候我的页面中的关注数还是之前的,取消关注的并没有从总关注数中减去,今天我在回退的基础上做了扩展, 可以支持回退的时候指定是否要刷新上个页面,可以解决这个问题。

但是刷新页面其实用户体验很差的,最好的办法是异步加载,只改变需要改变的地方,为了支持这个我还加了一个回调的方法,可以支持方法回调,你可以自己写逻辑去实现数据刷新。

主要还是改造clicked方法,因为view是在clicked中创建的,在回退的时候我们可以通过监听view的close方法来实现这个操作

回退关闭时刷新使用代码如下:

clicked('http://cxytiandi.com',true, false,{closeRefresh:true});

回退关闭时执行回调代码使用代码如下:

clicked('http://cxytiandi.com',true, false,{},ref,{id:1001});
function ref(data) {
 console.log(data.id);
}

3, 安卓手机上都有一个回退的按钮,相当于苹果中从左往右滑动,到了主页的时候如果点击了2次回退的按钮,需要提示是否退出app,这个可以通过监听来实现:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表