3.3节介绍了Emscripten提供的三种同步文件系统:MEMFS
、IDBFS
、NODEFS
,它们各自的特性如下表:
特性 | MEMFS |
IDBFS |
NODEFS |
---|---|---|---|
访问本地文件系统 | 否 | 否 | 是 |
使用内存模拟 | 是 | 是 | 否 |
支持持久化存储 | 否 | 是 | 是 |
NODEFS
只能在Node.js中使用,因此在网页应用中不推荐使用文件系统最核心的原因在于:MEMFS
/IDBFS
都需要占用内存来模拟文件系统。
内存是非常珍贵的硬件资源,iOS设备的内存普遍不超过4GB,用内存模拟文件系统不论从哪个角度来说,都是非常奢侈的行为。
另外,虚拟文件系统的初始化所消耗的时间也是一个需要考量的因素,体积巨大的打包文件系统下载消耗较长的时间,这对于网页应用非常很不利。
笔者并不是说文件系统完全不能使用——使用IDBFS
保存前端配置是可行的,某些快速原型使用虚拟文件系统也可以降低移植难度;但是在使用Emscripten开发网页应用模块的时候,需要特别留意32位的内存空间、低速的网络IO操作限制,这与开发本地应用时可使用的资源有数量级的差异。当所需操作的数据非常巨大的时候,最好采用按需加载、分级加载策略。
放弃文件系统后,我们只能使用网络IO作为主要的数据通路,第5章将作进一步的探讨。