微信小程序的组件web-view推出有一段时间了,这个组件的推出可以说是微信小程序开发的一个重要事件,让微信小程序不会只束缚在微信圈子里了,打开了一个口子,这个口子或许还比较小,但未来有无限可能。

简单思考

1.通过web-view嵌入网页功能开放,给微信小程序的发展带来无限的可能,有好,也有坏,但利大于弊。好处在于让微信的开放性更强,无论将来混合模式和还是纯H5都有更多的机会在微信这个大舞台有表演机会。坏处可能就是也打开了漏洞之门,会有更多鱼龙混杂情况出现,这对微信的生态圈是个挑战。

2.这个口子的打开,再关上的可能性就不大了,而且只能越大越开,按照微信的节奏,微信应该有足够把握才会开放这个功能,一切都在微信的掌控当中。

3.大量基于h5的网站或应用都会被“小程序化”,微信这个“大”浏览器成为移动互联网海量流量的入口。微信搜索会不会成为移动搜索的绝对第一的搜索?

4.对前端工程师这个职业带来巨大的影响,降低了开发小程序的成本,让前端工程师更关注网页的架构,减小微信小程序的总体开发压力。

5.让热部署、热更新更为简单,原来调整小程序风格和布局需要重新审核和发布,这个周期有些长。有了web-view后,基于它开发的页面,可以随时改变外观、布局、数据。

简单实践

1.web-view里内嵌的域名域名在小程序管理后台设置业务域名,注意是业务域名,不是服务器域名。另外个人小程序目前是没有这个设置,因此也就无法使用这个功能。

2.一个页面(wml)只能放置一个web-view,且会覆盖其他的组件铺满屏幕,这时候你就当微信小程序是个浏览器好了。

3.web-view打开的页面必须是支持https的。

4。目前支持的jssdk接口还比较少,只支持“图像接口”,“音频接口”,“智能接口”,“设备信息”,“地理位置”,“摇一摇周边”,“微信扫一扫”,“微信卡券”,“长按识别”,比如获取用户信息,微信支付之类都不行,我猜以后会慢慢放开,逐步达到微信公众号的开放程度。

5.支持iframe ,最开始还不需要域名白名单(业务域名),后来把这个漏洞给补上了,不给人滥用的口子了。如果你页面上有google adsense可以要注意了,如果使用的苹果版微信,用web-veiw打开含有google adsense就会报错(有的安卓偶尔也会报错,原因不明),因为google adsense会虚拟一个iframe出来,google的域名自然不会在你的业务域名里,就会报错。

6.如果你的网站做了302跳转,跳转的域名也要设置在业务域名里,别想着鸡贼,能躲过这个配置。

7.通过内嵌网页的功能可以实现站内链接的跳转,当然不是小程序页面的跳转,而是在小程序里打开网页,虽然感觉上有些别扭,不过总算弥补了无法跳转的麻烦,对资讯类的小程序是很好的功能。

8.通过在onload里的options.url 参数可以解决分享web-view页面加载的问题,不过需要对options.url 通过decodeURIComponent进行解码,因为在分享转发的时候,微信小程序对url的特殊字符进行了十六进制编码,因此需要通过decodeURIComponent来解码,小程序的web-view页面才能正常加载。

9.web-veiw页面有时候无法触发onShareAppMessage方法,原因不明。如果有非web-view的页面和web-view同时存在的小程序,如果是非web-view的页面跳转到web-view页面,在转发web-view页面的时候无法触发onShareAppMessage方法。如果有非web-view的页面和web-view同时存在的小程序,如果是非web-view的页面跳转到web-view页面,在转发web-view页面的时候无法触发onShareAppMessage方法。

10.web-veiw页面 无法使用“打开调试”功能,如果需要看调试,需要返回上一个不使用web-view的页面查看。

11.web-view 嵌入的网页里如果有白名单以外的域名链接,点击后会报错。

12.web-view不支持微信支付,但web-view内嵌的页面使用了公众号授权的微信支付,是可以在内嵌的页面使用微信支付的。换句话说,如果如果用web-view内嵌公众号的h5页面,利用JSSDK是可以使用微信支付的。

----------------------------------------------------------------------------

欢迎关注我的网站和微信公众号,文章会在我的网站和微信公众号上同步发布。

本文首发链接:https://www.watch-life.net/wechat/web-view.html

我的网站:守望轩

微信公众号名称:守望轩

微信公众号:iwatchlife

你也可以扫描或长按以下二维码

微信小程序web-view的简单思考和实践的更多相关文章

  1. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能

    1.效果图: 2.页面仅仅利用了JS的相关功能,包含:wxml.js.wxss 2.1wxml页面代码: <text>绑定手机</text> <form bindsubm ...

  2. 微信小程序(一)--简单的介绍

    转自:https://developers.weixin.qq.com/miniprogram/dev/index.html 响应的数据绑定 框架的核心是一个响应的数据绑定系统. 整个小程序框架系统分 ...

  3. 微信小程序 + thinkjs + mongoDB 实现简单的前后端交互

    说明:这段时间跟老师学习了一下mongodb数据库,这次也是第一次搭建后台服务,出了不少差错,特此来复盘一下,非常感谢对我提供帮助的同学~ 一.使用 thinkjs + mongodb 创建后台服务 ...

  4. 微信小程序实战--开发一个简单的快递单号查询

    功能如图: 虽然工作中只负责小程序后台开发,但是还是小程序开发产生了浓厚的兴趣,官方文档也是超级详细了 这里就简单做一个快递单号的查询: 新建一个page: 接着就可以写wxml了.这里用一个简单的i ...

  5. 微信小程序wx.request的简单封装

    前言 之前写小程序,每次请求后台时都直接调用原生的API,wx.request,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单 ...

  6. 关于微信小程序获取view的动态高度填坑

    wx.createSelectorQuery().select('#box').boundingClientRect(function (rect) { width = rect.width heig ...

  7. 【微信小程序】view顶部固定或底部固定 + scroll-view中的元素view也可以使用position:fixed;固定选中元素位置

    1.顶端固定核心代码如下: <view class="page__hd" style="position:fixed; top:0;width: 750rpx;&q ...

  8. 微信小程序将view动态填满全屏

    一.在app.js利用官方方法获取设备信息,将获取到的screenHeight.windowHeight度量单位统一由rpx换算为px 注:官方文档给出 [rpx换算px (屏幕宽度/750)  ][ ...

  9. 微信小程序WEB工具安装

    1.下载工具链接:http://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201715 2.安装完成后图片样式如图: 3.新 ...

  10. 微信小程序 -- scroll view

    效果图:横向滚动和纵向滚动 scroll view使用方法文档,前面已经介绍查找文档方法,此处不再赘述 一.横向滚动 创建一个页面scroll-nav 然后,在.wxml文件中排版 <!--水平 ...

随机推荐

  1. hdu-3689 Infinite monkey theorem 概率dp+kmp

    有一只猴子随机敲键盘,给出它可能敲的键以及敲各个键的概率. 输入:n,表示有多少个键,m,表示猴子会敲m次键 n个二元组(字母,数字) 表示键代表的字母及其被敲的概率. 最后一个目标字符串. 问这只猴 ...

  2. 尝鲜svnup

    最近有同事折腾了一下svnup的编译,终于可以在Mac OS X和Linux上面编译通过了,仓库在这里:https://github.com/lvzixun/svnup/ svnup这个工具只有一个功 ...

  3. vba批量作图心得1

    1.1:连续有几个图的时候,如果需要设置某一个图的横坐标标签隐藏,要注意将坐标轴标签属性和坐标轴曲线粗细的属性区分开来 1.2:PlotArea里面有left和insideLeft属性,结合两个可以控 ...

  4. Window 下载Android系统源代码

    第一步:使用命令下载manifest文件夹 git clone https://aosp.tuna.tsinghua.edu.cn/ 第二步:进入文件夹,打开default.xml文件并找到自己要下载 ...

  5. Unity VS 创建脚本自动添加头注释-时间-描述-作者等信息

    Unity生成脚本自动添加头注释 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...

  6. Api文件

    对于我们不认识的类(只限于java自带的类),我们可以百度去查一下,但是这样是嚼别人吃剩下的骨头,我们可以去查java的api文件,虽然都是英语,但是还是硬着头皮看吧,加油! 链接:https://p ...

  7. 在进行多次scanf时,printf输出错误

    随便一处代码,经过改正后,输出正确的 ''' #include <stdio.h> int main(){    int T;    scanf("%d",&T ...

  8. JPA、Hibernate框架、通用mapper之间的关系及通用mapper的具体实现

    JPA是描述对象-关系表的映射关系,将运行期实体对象持久化到数据库中,提出以面向对象方式操作数据库的思想. Hibernate框架核心思想是ORM-实现自动的关系映射.缺点:由于关联操作提出Hql语法 ...

  9. memcache 杂记

    它是一个一个高性能的分布式内存对象缓存系统. 端口号 11211 目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.  需要频繁访问数据库的网站访问速度提升效果十分显著 根据一个sql取出的 ...

  10. 项目里如何访问AppDelegate

    项目里面访问AppDelegate做全局变量用有好几种方式 最原始就是 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shared ...