SinF的Electron系列之三—electron-packager加载第三方资源

在上篇SinF的Electron系列之二里我提到了,用–extra-resource字段来加载第三方资源。
在项目开始的时候,我把第三方资源放到了根目录的static文件夹里,发现并没有起到加载第三方资源的效果。通用查询,发现electron-packager提供–extra-resource字段。

核心方法,用 –extra-resource 字段来存储。用 path 模块来获取绝对路径。
核心路径,Resources文件夹

具体使用方法,
存储代码如下:
–extra-resource=./res/2.dat –extra-resource=./res/1.dat

【注意】./res 是我在根目录下面自定义的一个第三方资源目录,可以任意修改。如果有多个第三方资源,可以重复添加。

难点在于如何读取,我以mac版本的打包文件为例
右键进入app的文件目录,目录如下:
Contents
│ ├── Framworks (electron框架文件)
│   ├── MacOS
│   │   ├── 项目
│   └── Resources(资源)
│   │   └── electron.asar(打包后的执行文件,asar格式即加密格式,只能通过node.js的fs模块解析)
│   │   └── …(其他资源)
│   │   └── 1.dat
│   │   └── 2.dat

通过分析文件结构可以知道,我们打包后的执行文件,在 Resources 文件中,项的electron.asar包里。而第三方文件被放置到了 Resources 根目录下,所以 加载第三方资源 可以转换为,获取Resources文件夹中的资源

常用的“../”这里是不行的,需要用的 node.js 中的 path模块,代码如下:
const url = path.resolve(__dirname, ‘..’)
this.datUrl = url + ‘/1.dat’
其中: path.resolve(__dirname, ‘..’)表示当前目录的父目录的绝对路径,即Resource 目录的绝对路径
这样,就可以获取到第三方文件了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理