编辑: 南门路口 | 2016-09-08 |
) Web API 在一个网页中,压缩档中的档案都可以透过 file: 这个协定被存取,如同 Node API, asar 压缩档都被视为目录. 例如,要透过 $.get 取得一个档案: var $ = require('
./jquery.min.js'
);
$.get('
file:///path/to/example.asar/file.txt'
, function(data) { console.log(data);
});
把一个 asar 压缩档视为一般档案 在一些像是验证 asar 压缩档检查码(checksum)的例子中,我们需要以档案的方式读取 asar 压缩档中的内容,为了达到 这个目的,你可以使用内建的 original-fs 模组,它提供了没有 asar 支援的原生 fs API: var originalFs = require('
original-fs'
) originalFs.readFileSync('
/path/to/example.asar'
) 你也可以设定 process.noAsar 为 true 来关掉在 fs 模组中的 asar 支援: process.noAsar = true fs.readFileSync('
/path/to/example.asar'
) Node API 上的限制 尽管我们尽可能的努力尝试著使 Node API 中的 asar 压缩档像目录一样运作,还是有一些基於 Node API 低阶本质的限制 存在. 压缩档都是唯读的 所有压缩档都无法被修改,因此所有可以修改档案的 Node API 都无法与 asar 压缩档一起运作. 使用中的目录无法被设为压缩档中的目录 尽管 asar 压缩档被视为目录,却并没有真正的目录在档案系统中,所以你永远无法将使用中的目录设定成 asar 压缩档中 的目录,把他们以 cwd 选项的方式传递,对某些 API 也会造成错误. 更多透过 API 拆封的方法 大部分 fs API 可以读取一个档案,或是不用拆封就从 asar 压缩档中取得一个档案的资讯,但对一些需要传递真实档案路 径给现行系统呼叫的 API ,Electron 将会解开需要的档案到一个暂时的档案,然后传递该暂时档案的路径给那些 API 以便使 他们........