about
发表于
Expo中的Assets资源使用
图片、字体、视频、音频和其它你的App里用到的不是JavaScript的文件都被认为是资源(asset). 就比如说在在互联网上, 所有你通过http传输获取的东西叫资源。这一点跟移动app不同,在app里资源一般跟app本身的二进制文件打包在一起。
然而,在Expo中通过require引用的资源(例如<Image source={require('./assets/images/example.png')} />在编译的时候已经在本地文件系统存在了)跟在web中通过URL引用的资源(例如<Image source={{uri: 'http://yourwebsite.com/logo.png'}} />)是有区别的。Expo不保证通过web URL引用的这些资源的可用性,因为这些资源不在Expo的管理范围。另外,Expo本身无法获取任意Web URL的全部信息。当你的资源存在于本地文件系统的时候,打包器能够读取资源的基本元数据metadata,比如宽度、高度,然后将这些信息传递给你的App,所以你不需要明确指明某个图片的宽度和高度。然而当你使用远程web URL引用资源的时候,你就必须明确得指明宽度、高度这些信息,否则系统会默认使用0x0。 最后,我们也会看到两者的缓存机制也不同。
接下来是对require类型资源得详细解释,这些资源必须在编译的时候就已经在文件系统存在。而在通过远程URL引用图片资源的例子中,系统默认你知道怎么将一个图片上传到网络,并确保能够被web和移动App访问。