简介:微信小程序中可以直接运行 web 页面,这一新组件 web-view 的产生,可能直接导致小程序数量迎来一波高峰。本篇博文将从业务选型,微信小程序后台配置,使用 web-view 完成登录业务以及在实战中如何调试,一次性带你感受小程序内嵌 H5 的风采,帮你更有底气的使用微信小程序新组件 web-view。

微信小程序

一、技术选择:

1.H5 转成小程序方案路线优缺点对比:

H5 转成小程序方案路线优缺点对比

上表是从原有 H5 转相似业务逻辑的微信小程序的方案路线优缺点对比,基于时间的限制以及当前主流多端编译的可靠性考量,最终团队认为通过使用小程序组件 web-view 内嵌 H5 的方式比较适合当前的开发需求。 web-view 的兼容性问题主要是要在基础库在1.6.4+及以上才可以用,而微信官方统计基础库在1.6.4+ 的覆盖率已达 95% 以上,这个指标也符合产品大人的要求,于是便愉快的选择了 web-view 内嵌 H5 的技术方案。

2.H5 跳转小程序:

H5 跳转小程序

从上表中可以对比出 H5 相较于小程序的优缺点,方便各位前端大大评估需求。尤为重要的是因为小程序封装的比较严重所以小程序开发的灵活性没有 H5 那么高,这就要我们注意对交互设计的评估。

二、web-view 微信小程序配置系列问题

1、配置域名

注意:业务域名中配置的就是小程序以及 H5 和 H5 中引用 iframe 的域名。这里要特别注意的是假如 H5 中有内嵌的 iframe 也要配置进去

这里需要服务端的朋友配合一下,将校验文件放置在将要嵌套的业务域名的根目录。所以要注意后端是否可以支持,否则会有各种扯皮的问题

2、选择基础库

开发的时候不要忘记配置微信小程序的基础库,注意 web-view 要在基础库1.6.4以上的版本库才能使用

3、H5 中引入微信的 js

引入的 js 写的是 H5 跳转微信小程序的 API 实现,这个在H5首页中引入即可,如下图示例

H5 中引入微信的 js

三、web-view 与小程序的通信

官方给出了两种通信方法(如下图所示)

1、postMessage 通信

在 H5 中需要先用 wx.miniProgram.postMessage 接口,把需要分享的信息,推送给小程序。

在用户点击了小程序后退、组件销毁、分享这些特殊事件之后,小程序页面通过 bindmessage 绑定的函数读取 post 信息。

2、设置 web-view 组件的 URL 通信

H5 跳转小程序:

H5 跳转小程序

小程序跳转 H5:

首先在 .wxml 中引入 web-view 组件

引入 web-view 组件

之后在小程序的 js 文件中设置通过 URL 以问号传参的方式传入参数到 H5 中

URL传参

四、小程序内嵌 H5 登录实例

1、小程序登录实现方案流程图:

流程图

如上图所示:整个登录的 cookie 的传递经历了四个步骤:在小程序登录后获取到后端传递的 cookie 并保存

通过 web-view 中的 url 传递到 H5 中

在 H5 中得到传递的值并写到 cookie 中

在访问接口的时候带上 cookie 2、从微信小程序响应头中获得 cookie 存到 storage 中:

首先在登录页获取到响应头中的登录 cookie 放到 storage 中

登录 cookie 放到 storage

在微信小程序中每次请求接口的时候,将 storage 中的 cookie 取出来,放到请求头中,如果传入不正确或者没有传入 cookie 值,后台将返回 errorCode 为 3002 ,此时前端跳转到登录页面。

请求接口携带cookie

3、获得 cookie 并拼接到 URL 中

首先在 web-view 页面获取 cookie ,并匹配到需要传递的字段,之后将此字段放到 url 中通过问号传参的方式传递到 H5 中:

4、获取 cookie 并在 H5 中使用

在 H5 中获取 cookie 值,并带入 cookie ,注意 domain 和 path 的设置,这两个值必须都有:

获取 cookie 并在 H5 中使用

五、小程序内嵌 H5 调试解决方案

1、关于调试效果缓存的问题

小程序的更新机制即当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是 5 分钟)会被微信主动销毁。

小程序销毁后再重新启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次销毁后再重新启动时才会应用上。

2、内嵌 H5 调试问题

因为微信小程序开发者工具中并没有提供内嵌 H5 的调试工具,所以我们可以采取以下方法调试在 H5 开发的时候,我们可以在微信小程序开发者工具中找到 web-view 传递给 H5 的 URL 链接将此链接黏贴到浏览器中即可像平时开发 H5 一样调试

对于手机端 H5 的测试调试可以在 H5 中引入 vconsole 这个插件来调试程序,他可以让我们看到接口情况以及 H5 中的日志。

六、总结

看到这里,我们分别从web-view 技术的优缺点

web-view 微信小程序配置系列问题

web-view 与小程序的通信

小程序内嵌 H5 登录实例

小程序内嵌 H5 调试解决方案

小程序嵌套h5页面_快速小程序开发之微信小程序内嵌 H5相关推荐

  1. 一个程序如何连接到外网_如何从头开始开发一个微信小程序

    网上有很多的人在问:怎么开发一个微信小程序?今天我来给大家详细讲讲如何申请开发并部署一个微信小程序,大家看完这篇文章后就能够自己运营一个属于自己的小程序了. 现在的小程序有百度小程序,头条小程序,支付 ...

  2. vue 设置页面标题,微信公众号内嵌H5标题顶到顶部

    一.安装 npm install vue-meta -S 二.配置main.js import Meta from "vue-meta"; Vue.use(Meta); 三.页面配 ...

  3. 20-微信小程序商城 下单页面的产品列表和留言(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)

    下单页面的产品列表和留言 本节主要讲解下单页面中的产品列表和留言界面如何实现.效果如图14-9所示. 根据上面的布局分析,我们会产生基础的框架,代码示例如下: <view><!-第1 ...

  4. 小程序服务器七牛云,基于七牛云 API 开发的微信小程序 SDK

    概述 Qiniu-wxapp-SDK 是七牛云在小程序上的实现,网络功能依赖于微信小程序 API.您可以基于 SDK 方便的在小程序中上传文件至七牛云. Qiniu-wxapp-SDK  为客户端 S ...

  5. 微信公众号内嵌h5网页 实现微信授权

    废话不多说  上代码 if(window.location.search){ let str = window.location.search.split("&")[0]. ...

  6. 基于云开发的微信小程序实战教程(二)

    基于云开发的微信小程序实战教程(二) 上篇文章中,简单介绍了下小程序云开发的概念,还有开发工具的安装和配置,云开发环境已经搭建完毕. 本章主要内容:微信开发者工具如何使用,小程序云开发的基础目录结构 ...

  7. 基于云开发的微信小程序实战教程(一)

    基于云开发的微信小程序实战教程(一) 最近刚开发了款小程序,在开发过程中发现,基于云开发的教程资源不是很多,而且很不详细.所以边实战边总结了下云开发的简单教程,希望对你有所帮助. 本章主要内容:什么是 ...

  8. Android内嵌H5,安卓手机返回键点击无反应、苹果手机返回键正常情况解决方案

    定义一个返回APP的方法函数如下: function backForApp(delta = 1) {if (getCurrentPages().length > 1) {uni.navigate ...

  9. 小程序嵌套h5页面_微信小程序内嵌h5页面

    概况 使用 标签能在小程序中打开外部网页,但是要打开的网页的域名必须跟小程序的业务域名(业务域名可以在小程序的后台管理界面添加)一致,否则在真机上是打不开的.如果开发工具上勾选了'不校验域名',在开发 ...

最新文章

  1. dataframe python格式_python3.6 pandas,Series和DataFrame基础格式与用法,附代码实例
  2. linux c 进程间通信
  3. 系统架构领域的一些学习材料
  4. liunx 在虚拟机(VMware)下挂载光驱命令
  5. [Innost]Android深入浅出之Binder机制
  6. h.264 html播放,浏览器 – 我如何播放H264视频?
  7. struts2中jsp页面上验证码的生成
  8. python 3d绘图库_python – 用于科学3d绘图的Mayavi的替代品
  9. python382怎么用_教你如何使用Python快速生成验证码
  10. 因特尔计算棒(Intel Movidius Necural Compute)
  11. “技术需求”与“技术成果”项目之间关联度计算模型 复赛top1解决方案
  12. GDAL源码剖析(十三)之GDAL网格插值说明
  13. 百练(十三~十六)题解
  14. 社区版PyCharm(PyCharm Community)也可以有可视化的数据库工具呀
  15. SOLIDWORKS Composer生成BOM表属性不显示的解决办法
  16. 2022年11月多家权威机构____编程语言排行榜__薪酬状况
  17. python:pprint实例
  18. cad在哪里设置图幅大小_CAD的图纸大小的设置
  19. css解决图片失真问题
  20. Nginx+Apache一前一后双引擎驱动的你网站

热门文章

  1. CNN中卷积和池化计算公式
  2. 按键精灵curl、FTP、zip、sha1算法、下载文件、上传文件、蓝奏云api、压缩解压文件支持 安卓、IOS
  3. x86保护模式——全局描述符表GDT详解
  4. 小程序模拟表格-可左右滑动
  5. 国产热门操作系统Deepin试用感受
  6. FPGA国内外发展现状
  7. 想做网上线上引流怎么做?如何通过网络获取流量?
  8. Angular:解决innerHTML绑定页面内容,sanitizing HTML stripped some content警告处理和富文本背景色样式无法正常显示的问题
  9. oracle创建用户并授权select,oracle创建用户并授权,oracle创建用户并授权select
  10. SECS连接模式中active与passive