不久前微信小程序发布了web-view组件,这个消息在各个圈里引起不小的涟漪。近期正好在做小程序的项目,便研究了一下这个让大家充满期待的组件。
 
1,web-view这个组件是什么鬼?
官网的介绍:web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。简单来说,这个组件是一个和当前页面一样大小的容器,容器里显示的是属性src引用的url的内容。类似于html中的iframe框架。不同的是iframe可以自定义大小边框等样式,webview自动铺满整个小程序页面。
 
2,这个组件能给我们带来什么?
小程序的页面开发虽然和HTML开发类似,但小程序有自己定义的标签,且不支持HTML标签。这样HTML那些丰富的标签在小程序开发中完全无用武之地,也就限制了页面的表现形式。对于已经开发了移动网站的项目来说,若想要开发个小程序版本,就只能优雅降级重新开发了,有了这个组件,搭个框架简单一行代码就够了。更新小程序版本的话,需要微信审核,如果把内容放在嵌入的网页上,热更新搞定。除了这些,网站上那些运营方案也让大家跃跃欲试。
 
3,web-view组件使用
虽然开放了这个组件,但使用时有很多限制:
使用限制:对个人类型和海外类型的小程序暂不支持
指向域名的限制:域名必须为https协议且经过ICP备案
域名修改限制:一个小程序最多可添加20个域名,一年可修改50次
小程序基础库限制:基础裤1.6.4以上版本支持这个组件,低版本需做兼容
注:配置域名时,并不是随便一个备案过的https就可以的,需要从配置后台下载校验文件放在域名根目录下,验证通过后才能配置成功。
 
克服以上重重难关后,在小程序项目中新建页面,配置路径,页面加入以下代码:
<!-- wxml -->
<!-- src地址是需要指向的网站地址 -->
<web-view src="https://mp.weixin.qq.com/"></web-view>
对,就这简单的一行代码就可以让网站的内容显示在小程序里。
 
4,webview网页和小程序的联系
小程序提供了webview网页中使用的JSSDK文件,引用方式如下:
<!-- html -->
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>

// javascript
wx.miniProgram.navigateTo({url: '/path/to/page'})
引入SDK后可以调用小程序JSSDK提供的接口,虽然不如小程序原生接口丰富,也能获取到设备网络状态、地理位置等信息,另外还提供了微信扫一扫、摇一摇、长按识别、拍照等接口。
 
截止当前版本,小程序基本不能获取网页的数据,只有在用户分享的时候,可以从返回的参数中获取web-view组件当前显示的页面路径。
 
由上可见webview网页和小程序间数据的联系非常弱。还有没有可以传输更多数据的方式呢?不死心又验证了两者的localStorage,结果是并不互通。
 
5,web-view组件其他表现
Q:web-view组件对网页重定向的表现
A:如果重定向的域名在当前小程序的业务域名下,可以重定向(301、301均可);否则提示无法打开
 
Q:打开web-view组件页面,其他页面是否被销毁
A:页面是否被销毁,不受当前页面是否为web-view组件页的影响。另外,小程序tab页面有切换时只加载一次并缓存页面的特性,这一特性对web-view组件页面同样适用。若将web-view组件页设置为tab页面,web-view组件页和加载的业务域名网站同样会被缓存,且设置为tab页的web-view组件页会保留tab组件显示。
 
Q:webview页面通过scheme打开手机app的表现
A:小程序并不能正确解析app配置的scheme,所以也不能通过scheme打开app。若通过scheme做跳转,在开发者工具中调试时会出现“ERR_UNKNOWN_URL_SCHEME”的错误,在移动客户端上表现为没有反应。
 
6,总结
小程序和网页间数据交互还太弱,对小程序第三方组件开发者来说并不能很好发挥作用。比如在对小程序数据做统计时,并不能很好的收集用户在webview页面的行为。如果小程序和webview网页的存储能打通,将带来更多可能性,但微信对每个小程序Storage设置的上限为10MB,而且其存储类型和浏览器也并不一致,所以打通的可能性并不大。如果在小程序中能监听到webview页面内url请求,也许可以尝试像hybrid一样通过url传递数据做统计。期待小程序在web-view组件上能开放更多功能~
 

小程序web-view组件的更多相关文章

  1. 一套代码小程序&Web&Native运行的探索06——组件系统

    接上文:一套代码小程序&Web&Native运行的探索05——snabbdom 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tre ...

  2. 一套代码小程序&Web&Native运行的探索05——snabbdom

    接上文:一套代码小程序&Web&Native运行的探索04——数据更新 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/ma ...

  3. 一套代码小程序&Web&Native运行的探索04——数据更新

    接上文:一套代码小程序&Web&Native运行的探索03 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/m ...

  4. 小程序web开发框架-weweb介绍

    weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用.如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中.在小程序大行其道的今天,它可以让你的小程序代码得到最大 ...

  5. 微信小程序之swiper组件高度自适应

    微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...

  6. 一套代码小程序&Web&Native运行的探索02

    接上文:一套代码小程序&Web&Native运行的探索01,本文都是一些探索性为目的的研究学习,在最终版输出前,内中的内容可能会有点乱 参考: https://github.com/f ...

  7. 微信小程序中的组件使用1

    不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...

  8. 小程序解决方案 Westore - 组件、纯组件、插件开发

    数据流转 先上一张图看清 Westore 怎么解决小程序数据难以管理和维护的问题: 非纯组件的话,可以直接省去 triggerEvent 的过程,直接修改 store.data 并且 update,形 ...

  9. 微信小程序之自定义组件的应用

    小程序支持自定义组件,下面是一个简单的购物车组件,实现的效果如图: 效果图 创建组件 在根目录创建components目录,然后创建计数组件 count 如图: 组件内容 <!--compone ...

  10. 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放

    小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...

随机推荐

  1. 一份传世典文:十年编程(Teach Yourself Programming in Ten Years)

    原文:Teach Yourself Programming in Ten Years作者:郭晓刚翻译:郭晓刚(foosleeper@163.net)最后修订日期:2004-3-192005-01-12 ...

  2. MVC.NET 发布后,部署到iis ,网站中的Bootstrap的字体图标不能正常显示

    时隔多日没有在博客中记录自己遇到的问题及解决方案了 ,今天给大家分享一个可能会遇到的一个鸡肋bug ! 如果你的项目是MVC并且在项目中引用了 Boostrap 框架,你在编辑发布后部署到iis的时候 ...

  3. 笨鸟先飞之ASP.NET MVC系列之过滤器(05结果过滤器)

    概念介绍 结果过滤器看名字就知道这个过滤器是针对方法所产生结果的,结果过滤器,主要在我们的动作方法结果返回前后执行. 如果我们需要创建结果过滤器需要实现IResultFilter接口. namespa ...

  4. win10 uwp 车表盘 径向规

    车表盘就是有刻度的圆盘加上针,这个控件可以直观让用户知道当前的速度或其他 看名字不知道是什么,我就放一张图 使用很简单,在Nuget,Radial Gauge 要使用大神做的,简单,在使用我们需要在N ...

  5. webpack 入门指南

    很久没有更博了... 这就把最近积累用到的知识点更新到这里.. 望 共勉 什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffe ...

  6. C#连接oracle数据库提示ORA-12154: TNS: 无法解析指定的连接标识符

    C#连接oracle数据库提示ORA-12154: TNS: 无法解析指定的连接标识符如果PLSQL Develope能连接上而用代码无法连接上则可以考虑sqlnet.ora文件中是否有NAMES.D ...

  7. 交换知识 VLAN VTP STP 单臂路由

    第1章 交换基础 1.1 园区网分层结构 层次 作用 出口层 广域网接入 出口策略 带宽控制 核心层 高速转发 服务器接入 路由选择 汇聚层 流量汇聚 链路冗余 设备冗余 路由选择 接入层 用户接入 ...

  8. idea tomee required to support ear ejb deployment问题

    先删掉原来的uname,然后添加项目即可

  9. C#设计模式之十二享元模式(Flyweight)【结构型】

    一.引言   今天我们要讲[结构型]设计模式的第六个模式,该模式是[享元模式],英文名称是:Flyweight Pattern.还是老套路,先从名字上来看看."享元"是不是可以这样 ...

  10. npminstall无法安装node-sass

    cannot download "https://hithub.com/sass/node-sass/releases/download/v3.13.0/win32-x64-46_bindi ...