微信小程序内含H5页面实现方式

微信小程序内含H5页面实现方式

一、背景

众所周知,我们写完小程序,发到线上,是需要经历设置版本、提交代码审核、等待审核等步骤,放一个版本下来可能花费很多的时间,甚至很可能等待了很长时间,审核未通过,又要重新提交审核。这个流程走下来,到线上,可能会有诸多的不确定因素而导致延迟上线时间,并且对某个模块业务上需要频繁改动,那就需要经常发版了,以此如何可以减少发版的频率呢?那么就油然而生了微信小程序中插入h5页面,这个h5就专门写频繁改动的模块,引入这个模块的变动,并没有导致微信小程序内部的变动,所以就不需要发版了。这就是我们项目微信小程序中内写h5页面的背景了。

二、具体使用

1、实现的条件

1.1、实现微信小程序内含H5页面所需要用的容器标签是:web-view,这个在使用时需要注意:

  • 个人类型的小程序暂不支持使用。
  • 客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效
  • 小程序插件中不能使用。
  • web-view网页中可使用JSSDK 1.3.2提供的接口返回小程序页面

1.2、在h5项目中需要导入wx-jssdk包,要使用到h5页面跳到小程序内的页面(例如h5页面的产品跳到小程序内的产品详情。):wx.miniProgram.navigateTo、wx.miniProgram.switchTab等API;

微信小程序的文档

2、微信公众平台配置

h5的域名需要在该小程序下的微信公众平台中配置为其业务域名:
登录微信公众平台=》开发管理=》业务域名 (个人版本时没有业务域名设置的)

3、创建h5项目

创建完该项目后,在html文件中导入wx-jssdk包

4、在创建的小程序的处理

以我的项目为例:

  • 在根文件下创建的config,创建web-view-config.js文件
    在这里插入图片描述

  • 下面为web-view-config文件内容,导出的是为web-view标签加载的链接
    在这里插入图片描述

  • 使用web-view,提供了几个事件如:bindmessage、binderror等,可见微信开发文档,这几个事件可用可不用,视具体情况而论

// webViewUrl 为跳转的链接
<web-view wx:if="{{webViewUrl}}" src="{{webViewUrl}}" bindmessage="bindMsg"></web-view>

在对相应链接拼接参数,可能需要特殊处理,拼接小程序的cookie值。

// 将object转换成webViewUrl

import WebViewConfig from '../../../config/web-view-config.js';
//拼接参数
this.setData({
          webViewUrl: `${WebViewConfig.newsDetail}${convertWebViewUrl(webViewParams)}`,
        	});
const convertWebViewUrl = (obj = {}) => {
  let url = '';

  // url添加登录态
  const caizhi_key = wx.getStorageSync('cookie').split(';')[0].split('=')[1];

  // 经理id
  let staffId = '';
  const { isManager, managerInfo = {}, customerInfo = {} } = getApp().globalData;
  if (isManager) {
    staffId = managerInfo.staffId;
  } else {
    staffId = customerInfo.visitManagerStaffId;
  }
  url += `?caizhi_key=${caizhi_key}&staffId=${staffId}`;

  // url格式化参数
  const params = Object.keys(obj).reduce((prev, curr) => {
    return `${prev}&${curr}=${obj[curr]}`;
  }, '');
  url += encodeURIComponent(params);

  // url添加时间戳,清缓存
  url += `&timestamp=${new Date().getTime()}`;
  return url;
};
  • 看业务域名有没有成功,可以看开发工具中的详情
    在这里插入图片描述
    实现以上步骤,即可打开小程序就可以加载到h5写的页面

三、总结

使用h5页面来减少发版的频次,是挺好的方式,但是这样的实现也是有一定风险的,导致小程序被封,例如h5内的页面内容是第三方的,不可控,出现一些风险内容导致使得小程序被关闭。在实际开发中也会有些问题,h5页面在小程序内操作有一定限制的或标签的兼容(小程序提供标签和常规标签)等问题。总的来说,这样的使用有一定的好处的,就你所需来论了

  • 22
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值