SinF的Electron系列之三---electron-packager加載第三方資源

在上篇 SinF的Electron系列之二裏我提到了,用 --extra-resource字段來加載第三方資源。

在項目開始的時候,我把第三方資源放到了根目錄的static文件夾裏,發現並無起到加載第三方資源的效果。通用查詢,發現electron-packager提供--extra-resource字段。node

  • 核心方法,用 --extra-resource 字段來存儲。用 path 模塊來獲取絕對路徑。
  • 核心路徑,Resources文件夾
  • 具體使用方法,segmentfault

    • 存儲代碼以下:
    --extra-resource=./res/2.dat --extra-resource=./res/1.dat
【注意】./res 是我在根目錄下面自定義的一個第三方資源目錄,能夠任意修改。若是有多個第三方資源,能夠重複添加。
  • 難點在於如何讀取,我以mac版本的打包文件爲例app

    • 右鍵進入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 目錄的絕對路徑electron

      • 這樣,就能夠獲取到第三方文件了。this

相關文章
相關標籤/搜索