1)支持版本:仅千牛PC端 7.35.66N 及以上;
2)若需要和小程序通信,必须添加 id
属性。
供开发者在小程序中自由使用web生态能力。
使用此能力需要将页面资源(html、css、js等)放在研发工程中,上传后会一并打入小程序包。
注意:web原生网络能力会受到限制。
同 webview,另增加 mini
属性,添加此属性可控制webview大小。
如:
<view class="page"> <web-view mini="true" src="https://render.alipay.com/p/s/web-view/index" onMessage="onmessage"></web-view> </view>
1.支持虚拟 URL:https://webview/...,此虚拟 URL 不必申请 白名单;
2.虚拟 URL 会重定向到小程序根目录的 webview 下;
3.使用虚拟 URL 的 <web-view>
组件会受到网络限制,可访问的地址为:
1)本地地址:域名部分为 localhost 或 127.0.0.1,可带端口号;
2)虚拟地址:https://webview/...
3)商家图片空间:https://img.alicdn.com/...
4)补充中...
1)云 + 端项目:https://o3-ide.oss-cn-hangzhou.aliyuncs.com/taobao-demo/cloudapp.tar.gz
2)端项目:https://o3-ide.oss-cn-hangzhou.aliyuncs.com/taobao-demo/app.tar.gz
可使用自有的开发工具写纯前端页面,如 VS Code 配合 Chrome 调试。生成目标文件,放到小程序根目录的 webview 目录下。
目录结构示意:
<ROOT> ├── app.acss ├── app.js ├── app.json ├── pages │ ├── index │ │ ├── index.acss │ │ ├── index.axml │ │ ├── index.js │ │ └── index.json │ └── ... └── webview ├── some-page.html ├── another-page.html ├── assets │ ├── some-style.css │ └── some-script.js └── ...
使用原 <web-view> 组件,配合虚拟 URL:https://webview/some-page.html,写法:
<web-view src="https://webview/some-page.html" />
在小程序根目录配置 mini.project.json:
{ "include": [ "webview/**/*.js", // glob 表达式,匹配 webview 下各类文件。必须按文件类型分别列出,第一项必须 webview/ 开头,后面的项开头都不能有 webview/ "**/*.html", "**/*.css" ] }
这样打包的时候,webview 下文件会被打包进来。可以根据需要自行定制包含 webview 下哪些文件,以避开一部分非必需文件。
虚拟 URL 只支持“webview”目录名称。如果您通过配置 include 列表将另一个目录 foo 打包进来,是无法通过 https://foo/... 来访问的。
如果使用了云服务 ( mini.project.json 里配置了 "cloud": { "type": "CLOUDAPP" }
)
需要在 client 目录下,再创建一个 mini.project.json:
根目录下的 mini.project.json 和 client 目录下的 cient。除了 miniprogramRoot 不同,其他字段保持一致。
A:是长期方案,请放心使用。
未来,当小程序页面以及组件解决了性能问题、开发效率问题、生态丰富度问题以后,不排除会和开发者协商改成纯小程序页面。此事目前没有时间表,也没有可预见的计划,未来即使发生,也会是一个渐进型的、平滑的过程。
A:平台不对 Local WebView 的使用做类似的限制。
有如下推荐的使用建议(不强制):
1)尽可能使用小程序页面、小程序组件
2)一个页面一旦使用 <web-view>,推荐整页都是 <web-view>,不推荐使用局部的或者多个 <web-view>。如果业务确实需要,那么请做好视觉、交互体验,以及性能测试。
3)在需要使用原生浏览器能力的场景(如 DOM 操作),以及性能敏感的场景(如长列表),推荐使用 Local Webview。这种场景下此前通过申请白名单使用在线 WebView 的,请尽量切到 Local WebView,未来平台也会做类似引导。
A:如果体积不大,可以打到包里。否则请使用平台提供的云存储、图片空间,Local WebView 拦截网络时会放行此类请求。
A:请在开发期间将此类组件的名称、开发商、官网及其联网验证的完整 URL、请求字段告知平台。对于业界广泛使用的、广为人知的组件,平台可配置白名单。请尽量不要使用过于小众的组件。
A:请在开发期间将您使用的三方 JS 库的名称、版本、官网告知平台,平台视其通用程度考虑将它们部署到平台 CDN。
A:请通过 <web-view> 组件和小程序的通信接口,让小程序去调用 my.XXX 系列 API 访问业务接口,然后通过通信接口给到 <web-view> 中的页面。
A:Local WebView 内的内容,请通过自有开发工具开发,打包后放到小程序根目录下的 webview 下(放 dist 包,不要放源代码包)。然后小程序生成预览包或真机调试包,去千牛里打开。千牛内使用 F12 打开开发者工具可调试 Local WebView 中的页面,然后配合使用 Chrome 连接小程序调试端口可调试小程序,完成联调。
推荐在前期采用本地 server、mock 数据等方式在自有开发工具调试好 Local WebView 页面,只在最后到千牛上做简单的整合验证。
未来 IDE 会支持更友好的开发方式。
A:需要开发者通过判断千牛版本号来判断是否支持 Local WebView,从而确定使用 Local WebView 还是在线 WebView 亦或是 my.navigateToQAP。当支持 Local WebView 的版本全量以后,我们会逐步收口此前的白名单。
A:预览模式下,允许 web-view 组件访问本地地址,方便页面调试。