位置: IT常识 - 正文

uniapp+h5混合开发(uniapp和vue混合开发)

编辑:rootadmin
uniapp+h5混合开发

推荐整理分享uniapp+h5混合开发(uniapp和vue混合开发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp开发h5兼容问题,uniapp内嵌h5,uniapp和vue混合开发,uniapp内嵌h5,uniapp开发的h5和普通的h5,uniapp开发的h5和普通的h5,uniapp开发的h5和普通的h5,uniapp开发的h5和普通的h5,内容如对您有帮助,希望把文章链接给更多的朋友!

uniapp+h5混合开发(uniapp和vue混合开发)

为了减少app频繁上架,频繁更新,决定放弃纯uniapp开发,改用uniapp(后续简称uni)+h5的方式进行混合开发。 技术选型: 整个app架子用uni(vue3),h5采用vue3+vant4,然后使用uni的webview进行页面控制。由于我们是由vue2升级到vue3,所以之前的一些代码需要做调整,这里自己去看一下vue2和vue3的区别。在技术选型上也本着一个原则,如遇技术冲突,就以uniapp为主,h5只做页面展示。 其中还有几个点在这次升级中也提出来了,考虑到篇幅问题,这里只贴关键代码 1、页面跳转问题,uni有路由管理,h5也有路由管理,由于所有的h5界面都采用web-view方式访问,所以h5界面在开发的时候规定了不允许使用window.open(在ios系统中有可能出现无法使用的情况)和location.href方式跳转,也禁用了h5的路由方式跳转,代码如下:

//uni获取webview访问路径//该页面名称vuePage<template><view><web-view :src="indexUrl" @message="getMessage" @onPostMessage="getPostMessage"></web-view></view></template>onLoad(param) {let _this = thislet url=decodeURI(param.vuePage)url=base64.decode(url);//"/app_dyg"+url 前端路由地址_this.indexUrl = '前端访问地址'+"/app_dyg"+url},/** * 保留当前页面,跳转到vue界面,这种方式不需要全路径,只需要页面的路由 * @param url */const navigateToVueView = (url) => { url = Base64.toBase64(url) window.uni.webView.navigateTo({ url: '../vuePage/vuePage?vuePage=' + encodeURI(url) })}

这种方式就是h5界面调用uni提供的路由跳转接口进行页面跳转,需要注意的是h5界面需要引入uni.webview.1.5.2.js,具体引入方式可参考官方文档,就不过多赘述。这里只列举了一种,如有其他需要可参考这段代码进行编写,下图是uni提供的部分接口 2、页面返回之后h5界面没有刷新数据问题 由于所有的h5界面都是采用的webview方式访问的,页面都是存在uni页面栈里面的,所以返回之后h5的勾子函数会失效,但是uni的onShow()是有效的,所以在页面返回之后通过evalJS传值的方式来触发h5页面的刷新,代码如下:

onShow() {// #ifdef APP-PLUSif(typeof this.$mp!='undefined' && typeof this.$mp.page!='undefined'){var currentWebview = this.$mp.page.$getAppWebview();var wv = currentWebview.children()[0]if (typeof wv != 'undefined') {setTimeout(function() {wv.evalJS('appMsg()')}, 50);}}// #endif},

由于appMsg使用频率较高,为了方便使用,我将它注册到了window下面,方便在开发过程中进行调用

//将appMsg注册到window下面declare interface Window { uni: any tracking: any appMsg: any}//在需要刷新数据的界面进行调用window.appMsg = () => { getData()}

3、重要信息缓存问题 在使用过程中,我们会将用户信息,token等重要信息缓存起来,尤其是token这种数据,生命周期比较短,在我们系统中只有5分钟,就需要在uni不断的刷新token,如果多端进行数据维护也比较麻烦,所以在开发过程中h5端只调用uni缓存的信息,代码如下

if (window.plus) { setData(); } else { document.addEventListener('plusready', setData, false); } function setData() { sessionStorage.setItem('token', plus.storage.getItem('token')) sessionStorage.setItem('userInfo', plus.storage.getItem('user')) sessionStorage.setItem('appApiUrl', plus.storage.getItem('appApiUrl')) }

uni访问h5界面的时候都会触发该方法,所以h5界面会将uni缓存的最新数据进行存储,保证数据的一致性。这里在开发过程中遇到这样一个问题,目前主要是ios系统中发现了这个问题,就是数据缓存和页面加载不同步,也就是页面加载完了,但是token等数据还没有缓存好,所以在h5的路由配置的时候是做了一个延迟加载的处理

router.beforeEach((to: any, from, next) => { if (to.meta.title) { document.title = to.meta.title } if (to.matched.length === 0) { next('/404') } else { setTimeout(function () { next() }, 300) }})
本文链接地址:https://www.jiuchutong.com/zhishi/296055.html 转载请保留说明!

上一篇:Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问(node.js环境搭建)

下一篇:vue-treeselect 的基本使用(vue treegrid)

  • 视同销售的增值税怎么申报
  • 税务师考试各科老师推荐
  • 注册会计师考试时间2023
  • 什么原始凭证可以填写
  • 房地产企业增值税管理办法
  • 一般纳税人支付给小规模纳税人的税率
  • 公司员工提成怎么交个税
  • 处置投资性房地产的损益怎么算
  • 公司打印银行回单和对账单
  • 加计抵减其他收益汇算清缴填哪里
  • 异地开发房地产会一直待在那个城市吗
  • 土地使用管理费
  • 建筑资质挂靠费用怎么写会计分录?
  • 有关税收的征收管理规定介绍
  • 甲供材简易征收税率
  • 公司租房可以入公积金吗
  • 公司替员工承担个税分录不再收回
  • 股东向公司借款需要交税吗
  • 存货相关的会计科目
  • 住房公积金的工资基数什么意思
  • 印花税的征收范围
  • 附加税申报表
  • 其他权益工具投资公允价值变动怎么计算
  • 行政事业单位往来票据使用范围
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • 会计凭证和记账凭证的区别是什么
  • deepin如何设置网络
  • 在电脑桌面上添加快捷程序
  • ecshop有哪些bug
  • 进项税加计抵扣最新政策2019
  • 如何认定坏账
  • php数组函数输出《咏雪》里有多少"片"字
  • 未分配收益余额在哪方
  • 基于php技术
  • 红字发票如何开具
  • 计提企业所得税是在结转损益后吗
  • 查补的增值税账务处理
  • php使用正则表达式提取abcdef
  • thinkphp分表查询
  • ajax提交表单数据
  • 应收票据和应付票据
  • 本年利润的会计分录有哪些
  • 培训费属于什么税收分类编码
  • js方案
  • 公司认缴的钱可以动吗
  • 百旺金赋服务费不交会怎么样?
  • 营销策划协议
  • 河南巩义黄河治理项目土方工程有哪些
  • 建筑企业小规模纳税人
  • 通讯补贴计入个税吗
  • 无形资产的摊销计入什么科目
  • 企业所得税的征税对象包括( )
  • 增值税发票跨月可以作废吗
  • 企业固定资产没有加速折旧还填资产加速折旧表吗
  • 暂估销售收入账目
  • 暂估成本比实际高分录
  • 损益平准金结转
  • 可供出售金融资产公允价值变动
  • 新企业如何建帐
  • sqlserver2008分页查询
  • 数据库设计三大范式
  • win10设置不了
  • winxp每次开机都要输入用户名
  • solaris安装教程
  • win8怎么取消自动关机
  • ps到底怎么用
  • window8设置在哪里
  • linux做成服务
  • win10系统无法进入
  • cocos creator 动画制作
  • node.js有什么作用
  • nodejs实战教程
  • Unity3D游戏开发(第2版)pdf
  • unityai寻路
  • shell脚本入门详解
  • js跨域的几种方法
  • js eval
  • javascript函数
  • 税务备案超过15天
  • 郑州契税怎么收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设