微信小程序WebView与H5 通信方式


微信小程序组件 Web-view 定义:承载网页的容器

1.相关 api

接口名 说明
wx.miniProgram.navigateTo 参数与小程序接口一致
wx.miniProgram.navigateBack 参数与小程序接口一致
wx.miniProgram.switchTab 参数与小程序接口一致
wx.miniProgram.reLaunch 参数与小程序接口一致
wx.miniProgram.redirectTo 参数与小程序接口一致
wx.miniProgram.postMessage H5 向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的 message 事件
wx.miniProgram.getEnv 获取当前环境

2.小程序->H5 通过 URL 拼接参数携带信息 navigateTo、reLaunch、redirectTo

实现方式:

wx.miniProgram.navigateTo({ url: '/h5/loading-page', })
wx.miniProgram.navigateTo({ url: '/h5/loading-page?type=ccccc', })
wx.miniProgram.navigateTo({ url: '/h5/loading-page?type=aaaaaa', })

缺点:url 数据量有限,且需要打开界面

3.H5->小程序 wx.miniProgram.postMessage api

H5 页面传参:

//js项目直接引入sdk;


//vue项目使用引入sdk //需要安装依赖 npm install weixin-webview-jssdk
//使用的页面引入 import wx from "weixin-webview-jssdk"; //H5页面


小程序页面接收参数:


    

优点:接入成本低
缺点:向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的 message 事件,只能这些特定时机;

####

方式三:内存共享

无法实现,原因 wx.setStorage 与 localStorage 隔离

localStorage.setItem('h5key','value')
wx.setStorageSync('wx-key', 'value')

4.长连-Websocket

  • Websocket 简介:WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议;

  • 建立在 TCP 协议之上,服务器端的实现比较容易。

  • 与 HTTP 协议有着良好的兼容性。默认端口也是 80 和 443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

  • 数据格式比较轻量,性能开销小,通信高效。

  • 可以发送文本,也可以发送二进制数据。

  • 没有同源限制,客户端可以与任意服务器通信。

  • 协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL。

    优点:可以实现实时通信
    缺点:成本高,服务器压力大等;放弃此方式。

5.现状及其展望

  • 微信并不鼓励在小程序中大范围嵌入 H5,为了避免开发者把小程序变成“浏览器”,微信对小程序与内嵌 H5 的通讯做了诸多限制
  • 尽量使用单一方式实现,比如纯小程序原生,将 h5 功能移至小程序原生
  • 原生页面与 H5 之间通过 URL 进行通信
  • 不要尝试越过 wx 限制
  • 不得不用混合开发时,尽量做好优化,引入骨架屏等优化方式提高用户体验感
  • 以上三种方式均未很好实现 web-view 与 H5 双向通信

文章作者:   leader755
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 leader755 !
评论
 本篇
微信小程序WebView与H5 通信方式 微信小程序WebView与H5 通信方式
微信小程序组件 Web-view 定义:承载网页的容器 1.相关 api 接口名 说明 wx.miniProgram.navigateTo 参数与小程序接口一致 wx.miniProgram.navigateBack 参数
2023-11-19
下一篇 
H5跳转小程序方案 H5跳转小程序方案
1.在自定义 H5 页面嵌入微信标签(wx-open-launch-weapp)跳转 适用场景: 这种适用于运行在微信环境的自定义 H5 页面,将跳转按钮融合在自研 H5 应用,点击按钮后跳转指定小程序页面。 *开放标签 * 跳转小程
2023-11-04
  目录