最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron打包React生成桌面應(yīng)用方法詳解

 更新時(shí)間:2022年12月21日 12:22:17   作者:Leonban  
這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

一、Electron簡(jiǎn)介

Electron是一個(gè)能讓你使用JavaScript,HTML和CSS來(lái)創(chuàng)建桌面應(yīng)用程序的框架。這些應(yīng)用程序可以打包后在 macOS、Windows 和 Linux 上直接運(yùn)行。

在目前瀏覽器和移動(dòng)端盛行的互聯(lián)網(wǎng)環(huán)境下,跨平臺(tái)的桌面應(yīng)用開發(fā),也為前端提供了一個(gè)新分支方向。

二、搭建準(zhǔn)備

1、檢查git和node是否安裝完成

git --version
node -v
npm -v

2、搭建React

安裝create-react-app

npm install -g create-react-app

創(chuàng)建my-electron-app項(xiàng)目

create-react-app my-electron-app

啟動(dòng)項(xiàng)目

cd my-electron-app && npm start

3、安裝electron包

npm i --save-dev electron

三、創(chuàng)建基本應(yīng)用程序

首先需要了解下Electron,用Electron開發(fā)應(yīng)用程序就像構(gòu)建一個(gè)帶有網(wǎng)頁(yè)界面的Node.js應(yīng)用程序。同樣使用package.json文件作為主入口,主腳本指定了運(yùn)行主進(jìn)程的 Electron應(yīng)用程序的入口,這里是main.js 文件。

1、創(chuàng)建main.js文件

// 導(dǎo)入app、BrowserWindow模塊
// app 控制應(yīng)用程序的事件生命周期。事件調(diào)用app.on('eventName', callback),方法調(diào)用app.functionName(arg)
// BrowserWindow 創(chuàng)建和控制瀏覽器窗口。new BrowserWindow([options]) 事件和方法調(diào)用同app
// Electron參考文檔 https://www.electronjs.org/docs
const { app, BrowserWindow, nativeImage } = require('electron');
   const url = require('url');
   const path = require('path');
function createWindow () {
  let mainWindow = new BrowserWindow({
    width: 800, // 窗口寬度
    height: 600, // 窗口高度
    title: "Electron", // 窗口標(biāo)題,如果由loadURL()加載的HTML文件中含有標(biāo)簽<title>,該屬性可忽略
    icon: nativeImage.createFromPath('src/public/favicon.ico'), // "string" || nativeImage.createFromPath('src/image/icons/256x256.ico')從位于 path 的文件創(chuàng)建新的 NativeImage 實(shí)例
    webPreferences: { // 網(wǎng)頁(yè)功能設(shè)置
      nodeIntegration: true, // 是否啟用node集成 渲染進(jìn)程的內(nèi)容有訪問(wèn)node的能力
      webviewTag: true, // 是否使用<webview>標(biāo)簽 在一個(gè)獨(dú)立的 frame 和進(jìn)程里顯示外部 web 內(nèi)容
      webSecurity: false, // 禁用同源策略
      nodeIntegrationInSubFrames: true // 是否允許在子頁(yè)面(iframe)或子窗口(child window)中集成Node.js
    }
  });
  // 加載應(yīng)用 --打包react應(yīng)用后,__dirname為當(dāng)前文件路徑
  // mainWindow.loadURL(url.format({
  //   pathname: path.join(__dirname, './build/index.html'),
  //   protocol: 'file:',
  //   slashes: true
  // }));
  // 加載應(yīng)用 --開發(fā)階段  需要運(yùn)行 npm run start
  mainWindow.loadURL('http://localhost:3000/');
  // 解決應(yīng)用啟動(dòng)白屏問(wèn)題
  mainWindow.on('ready-to-show', () => {
    mainWindow.show();
    mainWindow.focus();
  });
  // 當(dāng)窗口關(guān)閉時(shí)發(fā)出。在你收到這個(gè)事件后,你應(yīng)該刪除對(duì)窗口的引用,并避免再使用它。
  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
});
app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
});

2、修改package.json文件

主進(jìn)程文件創(chuàng)建好了,修改package.json文件。

(1)配置啟動(dòng)文件,添加main字段,我們這里也就是main.js文件。如果沒(méi)有添加,Electron 將嘗試加載包含在package.json文件目錄中的index.js文件。

(2)配置運(yùn)行命令,使用"electron-start": "electron ." 。

{
  "name": "my-electron-app",
  "version": "0.1.0",
  "private": true,
  "main": "main.js",  // 配置啟動(dòng)文件
  "homepage":".", // 設(shè)置應(yīng)用打包的根路徑 更多了解參考:https://segmentfault.com/a/1190000021875558
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.1",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",  // react 啟動(dòng)命令
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "electron-start": "electron ."  // electron 啟動(dòng)命令
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "electron": "^11.1.1"
  }
}

3、啟動(dòng)Electron

準(zhǔn)備工作就完成了,進(jìn)行啟動(dòng)

main.js文件中如果設(shè)置的mainWindow.loadURL('http://localhost:3000/'); 則需要啟動(dòng)react項(xiàng)目

啟動(dòng)react項(xiàng)目

npm start

啟動(dòng)electron

npm run electron-start

四、打包項(xiàng)目

1、打包react項(xiàng)目

npm run build

將main文件中注釋的mainWindow.loadURL適用于react打包的方法釋放開。

2、打包 electron使用electron-packager依賴

npm install electron-packager --save-dev

3、package.json配置打包命令

"package": "electron-packager . my-electron-app --platform=win32 --arch=x64 --overwrite --electron-version=11.1.1"

4、 配置解釋

electron-packager <應(yīng)用目錄> <應(yīng)用名稱> <打包平臺(tái)> <架構(gòu)x86 還是 x64> <架構(gòu)> <electron版本> overwrite 如果輸出目錄已經(jīng)存在,替換它

5、 運(yùn)行打包命令

npm run package

到此這篇關(guān)于Electron打包React生成桌面應(yīng)用方法詳解的文章就介紹到這了,更多相關(guān)Electron React桌面應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react路由v6版本NavLink的兩個(gè)小坑及解決

    react路由v6版本NavLink的兩個(gè)小坑及解決

    這篇文章主要介紹了react路由v6版本NavLink的兩個(gè)小坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • React使用ref進(jìn)行訪問(wèn)DOM元素或組件

    React使用ref進(jìn)行訪問(wèn)DOM元素或組件

    在 React 里,ref 就像是一個(gè)神奇的小助手,能讓你直接去訪問(wèn) DOM 元素或者組件實(shí)例,下面就跟隨小編一起來(lái)學(xué)習(xí)一下具體的使用方法吧
    2025-03-03
  • 教你快速搭建 React Native 開發(fā)環(huán)境

    教你快速搭建 React Native 開發(fā)環(huán)境

    這篇文章主要介紹了搭建 React Native 開發(fā)環(huán)境的詳細(xì)過(guò)程,本文通過(guò)圖文指令給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • redux副作用處理之redux-thunk使用

    redux副作用處理之redux-thunk使用

    這篇文章主要介紹了redux副作用處理之redux-thunk使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在React中與后端API進(jìn)行交互的操作步驟

    在React中與后端API進(jìn)行交互的操作步驟

    在現(xiàn)代Web開發(fā)中,前后端分離的架構(gòu)已經(jīng)成為一種趨勢(shì),React,作為一種流行的前端庫(kù),常常與后端API進(jìn)行交互,以實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)更新和用戶體驗(yàn)優(yōu)化,本文將深入探討如何在React應(yīng)用中與后端API進(jìn)行交互,需要的朋友可以參考下
    2025-02-02
  • React Antd中如何設(shè)置表單只輸入數(shù)字

    React Antd中如何設(shè)置表單只輸入數(shù)字

    這篇文章主要介紹了React Antd中如何設(shè)置表單只輸入數(shù)字問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • react版模擬亞馬遜人機(jī)交互菜單的實(shí)現(xiàn)

    react版模擬亞馬遜人機(jī)交互菜單的實(shí)現(xiàn)

    本文主要介紹了react版模擬亞馬遜人機(jī)交互菜單的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 用React-Native+Mobx做一個(gè)迷你水果商城APP(附源碼)

    用React-Native+Mobx做一個(gè)迷你水果商城APP(附源碼)

    這篇文章主要介紹了用React-Native+Mobx做一個(gè)迷你水果商城APP,功能需要的朋友可以參考下
    2017-12-12
  • 如何使用React的VideoPlayer構(gòu)建視頻播放器

    如何使用React的VideoPlayer構(gòu)建視頻播放器

    本文介紹了如何使用React構(gòu)建一個(gè)基礎(chǔ)的視頻播放器組件,并探討了常見問(wèn)題和易錯(cuò)點(diǎn),通過(guò)組件化思想和合理管理狀態(tài),可以實(shí)現(xiàn)功能豐富且性能優(yōu)化的視頻播放器
    2025-01-01
  • React實(shí)現(xiàn)全選功能

    React實(shí)現(xiàn)全選功能

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)全選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論

平舆县| 中宁县| 商水县| 南木林县| 海宁市| 资中县| 恩施市| 民丰县| 临安市| 高安市| 红河县| 怀远县| 阳西县| 黄陵县| 固阳县| 东丰县| 巴东县| 曲周县| 三河市| 英超| 无极县| 驻马店市| 日土县| 雷山县| 贵南县| 微博| 临夏县| 格尔木市| 东山县| 大厂| 开阳县| 遵义市| 甘肃省| 柳江县| 东兰县| 兰溪市| 海丰县| 凌源市| 长乐市| 策勒县| 沿河|