本文将介绍 Weex 中 uri(url) 的用法。包括使用图像、字体等资源,处理相对路径以及如何访问本地及打包的资源文件。
Weex SDK 提供 local
scheme 来访问打包在应用程序中的资源,此 scheme 无法在 H5 环境下使用。目前,开发者可以在 image
组件和字体文件中使用本地资源。
在 iOS 中,Weex 会在 bundle resources
中查找。例如,image
组件的 src
属性为 local:///app_icon'
, Weex 会加载 bundle resouce
中名为 app_icon
的图像资源,而字体文件也以相同的方式工作。
在 Android 中,image
组件将从 drawable
资源文件夹加载,如 res/drawable-xxx
。但加载字体文件是不同的,Android 框架无法从 res
加载字体文件,因此 SDK 将从 asserts
文件夹加载它。
HTTP/HTTPS,它的工作方式与 web 相同,Weex 一直支持这种方式。
File ,使用 file
scheme 访问本地磁盘文件。这个方案有其局限性:
你不应该在源页面中硬编码文件 url。因为不管它是否运行在不同的平台(iOS,Android)上,同一平台不同机型的结果也可能不同,这取决于具体的设备。
所以一种可行的方案是在运行时动态获取文件 url,你可以使用它来显示本地磁盘的图像,或者稍后上传它。
/
、.
、..
、//
开头的相对 URI 将相对于 bundle url 解析。
这意味着, 一个以 /
开头的路径将是相对于 JS Bundle 文件的根文件夹。.
则是当前文件夹,..
是父文件夹。 //
则被解析为与 JS Bundle 相同的 scheme。
以上所有是默认实现,开发者可以通过提供一个 URI Adapter
来扩展或覆盖默认实现。与其他 Adapter 相同,应在 Weex SDK 初始化之前设置自定义 Adapter。