欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Electron+React應用打包全流程

 更新時間:2023年01月16日 08:31:24   作者:copcin  
本文主要介紹了Electron+React應用打包全流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

(第一次用 Typora 寫博,希望效果不錯~)

這幾天有個創(chuàng)意編程比賽,要寫一個電腦端應用。我準備用 React.js + Electron 做(因為熟悉~),編程部分一路風雨無阻,到了打包卻出現(xiàn)了問題。Electron 沒打過包不知道,一打包一下兩天兩夜就沒了(T_T)但最后還是打包成功了~ 由于里面坑很多,把我打包的流程淺寫在下面,供需要的人參考。

1. 打包工具的選擇

粽鎖粥汁,Electron 的打包工具有兩個:electron-packager 和 electron-builder。它們都可以把 Electron 應用打包成可執(zhí)行文件。這里我果斷選擇了 electron-builder。原因有兩點:

1. 打包文件體積小。用 electron-packager 我試著打了下包,打出來一下子兩個 G。要知道我寫的只是一個小程序,就占用兩個 G…… 而使用 electron-builder 打包出來的文件才 91M 多。裝在電腦上也才 400 多 M。

2. 和普通應用幾乎沒有區(qū)別。electron-packager 只能生成“綠色版”,也就是沒有安裝程序,直接運行里面的 exe。而 electron-builder 使用 NSIS,可以把安裝包打包出來。運行安裝包可以安裝應用,電腦設(shè)置也能識別得到,也很方便卸載。

2. 生成靜態(tài)文件

這一步我們就是要把 React 項目的靜態(tài)文件打包出來。這一步雖然簡單,但也有幾個坑需要注意。如果你使用 React Router,那 BrowserRouter 要替換成 HashRouter,因為 BrowserRouter 打包之后路由使用不了,路由組件本應該顯示的部分直接白屏。

在這里插入圖片描述

然后就可以執(zhí)行打包命令了。這個應該有學過。對于 npm,運行 npm run build。對于 yarn,就把前面的 npm 換成 yarn。

打包生成出來的文件也不能直接用。如果直接用的話 index.html 加載不出 js 文件會導致白屏。打開生成出來的 index.html,把引入 js 的語句加上一個點。它代表從當前目錄下的 static 加載 js。因為打包出來之后層級變了,直接使用 / 就變成從根路徑加載 js 了。

在這里插入圖片描述

最后就是把你應用的圖標 favicon 的大小調(diào)整成 256x256。Electron 的應用圖標大小必須要大于等于 256x256。別問我為什么,人家 electron-builder 要求的(T_T)

在這里插入圖片描述

3. Electron 入口文件配置

Electron 入口文件(就是 main.js,Electron 開啟的時候從這個文件開始加載)也是一個大坑。一不小心配置錯誤打包出來就又白屏了。Electron 入口文件的坑主要在于加載頁面。

之前開發(fā)的時候使用的 loadURL(“localhost:3000”) 用不了了,因為我們要加載的是剛剛生成出來的靜態(tài)頁面。這里需要用到 loadFile 來加載一個 html 文件。毫無疑問肯定是要引入我們剛剛打包出來的 index.html。

首先把入口文件名字改為 main.js 然后移動到項目根目錄(與 package.json 同級),然后把之前的 loadURL 刪了,改成 loadFile(“build/index.html”),代表加載 build 下的 index.html 文件。網(wǎng)上大部分教程都是教的 path.join(__dirname, “xxx”) 這種形式,親測無效。最簡單的就是最好的~

在這里插入圖片描述

4. electron-builder 配置

這是最重要的決定成敗的一步。打開 package.json,首先你需要把 main 屬性的值設(shè)置為 ./main.js,就是剛剛的那個 Electron 入口文件。
在這里插入圖片描述

然后是 electron-builder 的配置了。這里我們只打包 Windows 的安裝包。往 package.json 里加入如下代碼。粘貼的時候注釋“閱后即焚”~

"build": {
    "appId": "XXX", // 軟件包名,填你軟件的名字
    "productName": "XXX", // 產(chǎn)品名稱,也填你軟件的名字
    "copyright": "GPL 3.0", // 使用版權(quán)的名稱,可選
    "directories": { // 一些用到的文件夾
      "buildResources": "build", // 需要打包的靜態(tài)文件目錄
      "output": "dist" // 打包文件目錄,默認為 dist
    },
    "nsis": { // 安裝包生成程序 NSIS 的配置
      "oneClick": false, // 是否一鍵安裝
      "language": "2052", // 語言為中文
      "perMachine": true, // 按機器安裝
      "allowToChangeInstallationDirectory": true // 允許用戶自定義安裝路徑
    },
    "win": { // Windows 下的配置
      "icon": "./build/favicon.png", // 圖標路徑
      "target": "nsis" // 使用 NSIS 生成安裝包
    },
    "files": [ // 需要打包進去的文件
      "build/**/*", // build 下所有靜態(tài)文件
      "./main.js" // 入口文件 main.js
    ],
    "extends": null // 不使用擴展
}

最后在 script 里添加一個條目 builder,如下:

在這里插入圖片描述

保存,就配置完成了~

(如果你想要配置其它平臺或是其它配置,請參考官網(wǎng)配置說明:https://www.electron.build/configuration/configuration)

5. 準備打包文件

到這一步我們就可以安裝打包工具 electron-builder 了。直接一行代碼:npm i electron-builder --save-dev 或是 yarn add electron-builder -D。

electron-builder 在打包時需要很多依賴,從官方下載地址下載非常慢,所以我們要配置鏡像。對于 npm,輸入:

npm config set electron_mirror https://npmmirror.com/mirrors/electron/

對于 yarn,把上面的 npm 替換成 yarn 即可。

除此之外,electron-builder 還需要一些鏡像站沒有的依賴,要從 GitHub 上下載,我們可以把這些文件分別下載并解壓在如下目錄:

winCodeSign:C:\Users\用戶名\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0

nsis:C:\Users\用戶名\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1

nsis-resources:C:\Users\用戶名\AppData\Local\electron-builder\Cache\nsis\nsis-resources-3.4.1

它們的下載鏈接:

winCodeSign:https://github.com/electron-userland/electron-builder-binaries/releases/download/winCodeSign-2.6.0/winCodeSign-2.6.0.7z

nsis:https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-3.0.4.1/nsis-3.0.4.1.7z

nsis-resources:https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-resources-3.4.1/nsis-resources-3.4.1.7z

PS. 如果你去 GitHub 上看這些文件,你可能會看見它們有更新的版本出來。但是人家 electron-builder 只認上面的版本,版本不對 electron-builder 還要重新下載。上次我就是下載了 nsis 更新的版本,然后導致了 electron-builder 又下載了一遍 nsis(T_T)

6. 打包過程

接下來就是最后的打包了。如果你的 electron 沒有安裝為 dev 依賴,請卸載之后重新安裝并加上 --save-dev。

然后輸入 npm run builder 開始打包。等待一會兒即可。它可能會報幾個警告但是沒事~

在這里插入圖片描述

打包后你會看見生成了一個 dist 文件夾。dist 下有一個文件夾是 win-unpacked,里面是綠色版免安裝的打包程序。運行里面的 .exe 文件就可以打開你打包后的應用了。

在這里插入圖片描述

如果發(fā)現(xiàn)有白屏(其實上面所有的排坑都是為了避免白屏),可以在 main.js 里把開發(fā)者工具開起來,然后打包運行,根據(jù)它的報錯進行相應的調(diào)整。不過上面排了那么多坑應該不會白屏了~

dist 下的 .exe 文件就是你應用的安裝包,安裝到電腦上就可以跟普通軟件一樣使用了。

在這里插入圖片描述

如果能成功運行,你的 React.js + Electron 應用就打包完成了,恭喜~

P.S. Electron 應用也是真的大,即使使用 builder 打包也還要 400 多 M,看來前端即使有了 Electron 和原生后端應用還是有些差距~

到此這篇關(guān)于Electron+React應用打包全流程的文章就介紹到這了,更多相關(guān)Electron React應用打包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React如何使用sortablejs實現(xiàn)拖拽排序

    React如何使用sortablejs實現(xiàn)拖拽排序

    這篇文章主要介紹了React如何使用sortablejs實現(xiàn)拖拽排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • React中Redux核心原理深入分析

    React中Redux核心原理深入分析

    這篇文章主要介紹了如何在React中Redux原理,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當中去,本文給大家詳細講解,需要的朋友可以參考下
    2022-11-11
  • React鉤子函數(shù)之useDeferredValue的基本使用示例詳解

    React鉤子函數(shù)之useDeferredValue的基本使用示例詳解

    useDeferredValue是React 18中非常有用的一個鉤子函數(shù),它可以幫助我們優(yōu)化渲染性能,并讓UI更加流暢,如果你還沒有嘗試過它,不妨在你的下一個React項目中試一試,這篇文章主要介紹了React鉤子函數(shù)之useDeferredValue的基本使用,需要的朋友可以參考下
    2023-08-08
  • antd中form表單的wrapperCol和labelCol問題詳解

    antd中form表單的wrapperCol和labelCol問題詳解

    最近學習中遇到了些問題,所以給大家總結(jié),下面這篇文章主要給大家介紹了關(guān)于antd中form表單的wrapperCol和labelCol問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • React?useEffect不支持async?function示例分析

    React?useEffect不支持async?function示例分析

    這篇文章主要為大家介紹了React?useEffect不支持async?function示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 基于React實現(xiàn)搜索GitHub用戶功能

    基于React實現(xiàn)搜索GitHub用戶功能

    在本篇博客中,我們將介紹如何在 React 應用中搜索 GitHub 用戶并顯示他們的信息,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • 使用hooks寫React組件需要注意的5個地方

    使用hooks寫React組件需要注意的5個地方

    這篇文章主要介紹了使用hooks寫React組件需要注意的5個地方,幫助大家更好的理解和學習使用React組件,感興趣的朋友可以了解下
    2021-04-04
  • React Native項目中使用Lottie動畫的方法

    React Native項目中使用Lottie動畫的方法

    這篇文章主要介紹了React Native 實現(xiàn)Lottie動畫的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 基于React Native 0.52實現(xiàn)輪播圖效果

    基于React Native 0.52實現(xiàn)輪播圖效果

    這篇文章主要為大家詳細介紹了基于React Native 0.52實現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 詳解React 父組件和子組件的數(shù)據(jù)傳輸

    詳解React 父組件和子組件的數(shù)據(jù)傳輸

    這篇文章主要介紹了React 父組件和子組件的數(shù)據(jù)傳輸?shù)南嚓P(guān)資料,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下
    2021-04-04

最新評論