Electron結合React使用

React Electron

  1. 一種是自己重新基於 create-react-app腳手架弄一個,可能對於前端開發者而言這種更加熟悉一點。
  2. 一種是使用github上的現成模板

這裏着重第一種說明下,第二種在github上有現成的工程模板clone下來直接運行即可。最後也會看一下第二種

創建 react 工程

使用 create-react-app腳手架創建 react 工程

npx create-react-app my-app

安裝 electron

本地項目安裝electron 依賴

npm i electron --save

修改工程

修改package.json文件

  1. 在package.json 中添加 homepage和main字段

    "main": "main.js",
    "homepage": ".",
    

    main字段對應的main.js 是需要添加的electron 主進程的文件
    homepage 原因是默認情況下,homepage是http://localhost:3000,build後,所有資源文件路徑都是/static,而Electron調用的入口是file:協議,/static就會定位到根目錄去,所以找不到靜態文件。在package.json文件中添加homepage字段並設置爲"."後,靜態文件的路徑就變成了相對路徑,就可以正確地找到了。

  2. 添加script腳本命令

    "electron-dev": "electron . dev",
    "electron": "electron .",
    

    這裏一個是使用electron運行開發時候的腳本加了 dev的參數,後面會根據傳入的這個參數,在主進程中做一層判斷
    如果是開發環境的話,那麼主進程loadURL就會加載 http://localhost:3000/地址
    如果是打包之後的環境就會加載打包文件夾的地址(這裏打包是放在build文件夾下,所以會加載’./build/index.html’地址)

添加main.js文件

需要在工程目錄下添加main.js文件,即electron的主進程文件,這裏可以直接從github上的quick-start項目下直接copy過來做修改,地址是(https://github.com/electron/electron-quick-start)。
裏面做的事情,就是新建一個窗體應用,在electron應用啓動之後根據(開發/生產)環境去加載頁面。
主要的修改如下:

// 引入node的 path 和url模塊
const path = require('path')
const url = require('url');
// 獲取在 package.json 中的命令腳本傳入的參數,來判斷是開發還是生產環境
const mode = process.argv[2];

在createWindow函數中,創建了主窗體之後根據參數去加載不同的url到electron中:

//判斷是否是開發模式 
  if(mode === 'dev') { 
    mainWindow.loadURL("http://localhost:3000/")
  } else { 
    mainWindow.loadURL(url.format({
      pathname:path.join(__dirname, './build/index.html'), 
      protocol:'file:', 
      slashes:true 
    }))
  }

當然如果這裏開發環境下啓動的不是3000端口,那這裏也需要對應修改一下

添加 preload.js 文件

也是將quick-start工程中直接將這個文件copy過來即可

結合UI 框架

在這裏其實就當做和正常的web應用開發一樣,只不過這裏使用了electron包裝了一層,使得瀏覽器被包裝進了electron中。正常web開發中怎麼使用antd,這裏也是一樣使用。這裏簡單用 antd 演示一下
使用 npm i antd --save,然後在需要的地方引入對應的ui控件即可

熱模塊更新

到這裏之後基本就將electron 和 react 框架結合在一起了,下面

  1. 打開一個終端命令行輸入 npm run start 啓動react。(默認是在 http://localhost:3000/)
  2. 再打開一個命令行輸入 npm run electron-dev 啓動electron應用,這時候electron應用就會加載 http://localhost:3000/ 並且在代碼中修改也會熱更新到electron應用中的主窗體
  3. 如果react打包之後,可以運行 npm run electron 這個時候electron 加載的就是 build/index.html文件

開發模式下熱模塊跟新效果如下:
在這裏插入圖片描述
可以看到在代碼中做的修改可以實時的熱更新到electron 應用中去。
如果react打包之後,可以使用 npm run electron來加載react打包之後的應用。效果如下:
在這裏插入圖片描述

electron-react-boilerplate

這個是已近配置好的一個工程模板,可以基於此模板來使用。需要注意的是使用這個模板node版本需要>10
地址:https://github.com/electron-react-boilerplate/electron-react-boilerplate
clone下來之後運行會看到頁面配置了一個簡單的路由和一個計數器
效果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章