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

Electron集成React和Vue流程方法講解

 更新時(shí)間:2022年08月31日 09:39:31   作者:duansamve  
Electron也可以快速地將你的網(wǎng)站打包成一個(gè)原生應(yīng)用發(fā)布,下面這篇文章主要給大家介紹了關(guān)于Electron集成React和Vue的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

集成React

1. 熱調(diào)試

在React項(xiàng)目目錄下安裝Electron

npm install electron

修改package.json文件,增加或?qū)⒁延械膍ain屬性值修改為main.js,在scriptes中添加"electron-start": "electron .",最終配置文件如下:

{
  "name": "electron-react",
  "version": "0.1.0",
  "main": "main.js",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.3.0",
    "@testing-library/user-event": "^13.5.0",
    "electron": "^20.0.3",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "electron-start": "electron ."
  },
  "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"
    ]
  }
}

打開(kāi)main.js,將

const { app, BrowserWindow, globalShortcut } = require("electron");
const path = require("path");
function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webContents: {
      openDevTools: true, //不想要控制臺(tái)直接把這段刪除
    }
  });
  win.loadFile("index.html");
}
app.whenReady().then(() => {
  createWindow();
  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

中的

win.loadFile("index.html");

修改為

win.loadURL("http://localhost:3000/")

打開(kāi)兩個(gè)終端,一個(gè)運(yùn)行React

npm start

另一個(gè)執(zhí)行

npm run electron-start

程序運(yùn)行正常

2. 打包

默認(rèn)情況下,homepage 是 http://localhost:3000,build 后,所有資源文件路徑都是 /static,而 Electron 調(diào)用的入口是 file :協(xié)議,/static 就會(huì)定位到根目錄去,所以找不到靜態(tài)文件。在 package.json 文件中添加 homepage 字段并設(shè)置為"."后,靜態(tài)文件的路徑就變成了相對(duì)路徑,就能正確地找到了添加如下配置:

"homepage":".",

隨后運(yùn)行build構(gòu)建項(xiàng)目,構(gòu)建完成后可以在build文件夾下執(zhí)行index.html看看網(wǎng)站是否可以正確運(yùn)行。

npm run build

如果可以。在main.js中將代碼

win.loadURL("http://localhost:3000/")

更改為,即載入靜態(tài)文件,載入U(xiǎn)RL可以作為熱調(diào)試,打包時(shí)修改為靜態(tài)文件。

win.loadFile("./build/index.html");

最終的文件

main.js為:

const { app, BrowserWindow, globalShortcut } = require("electron");
const path = require("path");
function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webContents: {
      openDevTools: true, //不想要控制臺(tái)直接把這段刪除
    }
  });
  win.loadFile("./build/index.html");
}
app.whenReady().then(() => {
  createWindow();
  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

package.json為:

{
  "name": "electron-react",
  "version": "0.1.0",
  "main": "main.js",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.3.0",
    "@testing-library/user-event": "^13.5.0",
    "electron": "^20.0.3",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "electron-start": "electron ."
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "homepage":".",
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

目錄結(jié)構(gòu)為

之后的打包和平時(shí)的打包一樣即可。

集成Vue

原理和集成React類(lèi)似

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

相關(guān)文章

  • vue實(shí)現(xiàn)登陸登出的實(shí)現(xiàn)示例

    vue實(shí)現(xiàn)登陸登出的實(shí)現(xiàn)示例

    本篇文章主要介紹了vue實(shí)現(xiàn)登陸登出的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Vue組件之間數(shù)據(jù)共享淺析

    Vue組件之間數(shù)據(jù)共享淺析

    本文章向大家介紹vue組件中的數(shù)據(jù)共享,主要包括vue組件中的數(shù)據(jù)共享使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-11-11
  • Vue結(jié)合openlayers按照經(jīng)緯度坐標(biāo)實(shí)現(xiàn)錨地標(biāo)記及繪制多邊形區(qū)域

    Vue結(jié)合openlayers按照經(jīng)緯度坐標(biāo)實(shí)現(xiàn)錨地標(biāo)記及繪制多邊形區(qū)域

    OpenLayers是一個(gè)用于開(kāi)發(fā)WebGIS客戶(hù)端的JavaScript包,最初基于BSD許可發(fā)行。OpenLayers是一個(gè)開(kāi)源的項(xiàng)目,其設(shè)計(jì)之意是為互聯(lián)網(wǎng)客戶(hù)端提供強(qiáng)大的地圖展示功能,包括地圖數(shù)據(jù)顯示與相關(guān)操作,并具有靈活的擴(kuò)展機(jī)制
    2022-09-09
  • vue3頁(yè)面組件中怎么獲取上一個(gè)頁(yè)面的路由地址

    vue3頁(yè)面組件中怎么獲取上一個(gè)頁(yè)面的路由地址

    這篇文章主要給大家介紹了關(guān)于vue3頁(yè)面組件中怎么獲取上一個(gè)頁(yè)面的路由地址的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-02-02
  • Vue3實(shí)現(xiàn)組件級(jí)基類(lèi)的多種方法

    Vue3實(shí)現(xiàn)組件級(jí)基類(lèi)的多種方法

    vue3提供了 mixins和extends,但是嘗試之后發(fā)現(xiàn)這兩種方法只支持純OptionAPI,設(shè)置的data會(huì)被識(shí)別,但是設(shè)置的setup里return 的 reactive,完全無(wú)效,setup也沒(méi)有被執(zhí)行,這篇文章主要介紹了Vue3實(shí)現(xiàn)組件級(jí)基類(lèi)的幾種方法,需要的朋友可以參考下
    2023-04-04
  • vue實(shí)現(xiàn)搜索小功能

    vue實(shí)現(xiàn)搜索小功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)搜索小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • vue element-ui實(shí)現(xiàn)動(dòng)態(tài)面包屑導(dǎo)航

    vue element-ui實(shí)現(xiàn)動(dòng)態(tài)面包屑導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了vue element-ui實(shí)現(xiàn)動(dòng)態(tài)面包屑導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • vue?中使用?this?更新數(shù)據(jù)的一次問(wèn)題記錄

    vue?中使用?this?更新數(shù)據(jù)的一次問(wèn)題記錄

    這篇文章主要介紹了vue?中使用?this?更新數(shù)據(jù)的一次大坑?,我在 vue 實(shí)例中聲明了一個(gè)數(shù)組屬性如?books: [],在異步請(qǐng)求的回調(diào)函數(shù)中使用?this.books = res.data.data;?進(jìn)行數(shù)據(jù)更新,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能案例

    vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能案例

    這篇文章主要介紹了vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能,結(jié)合具體實(shí)例形式分析了網(wǎng)易云音樂(lè)相關(guān)接口調(diào)用與操作技巧,需要的朋友可以參考下
    2019-02-02
  • vue中使用/deep/失效的解決方法

    vue中使用/deep/失效的解決方法

    這篇文章主要介紹了vue中使用/deep/失效的解決辦法,使用了css預(yù)處理器,則可以使用/deep/, 如果/deep/ 無(wú)效,則使用 ::v-deep,本文給大家講解的非常詳細(xì)需要的朋友可以參考下
    2022-11-11

最新評(píng)論

秭归县| 甘南县| 朔州市| 安溪县| 游戏| 德州市| 彭阳县| 应城市| 台北县| 禹州市| 龙陵县| 克拉玛依市| 安达市| 济阳县| 巴青县| 金塔县| 全南县| 五原县| 安平县| 封丘县| 双流县| 苍山县| 北辰区| 临沂市| 桓台县| 揭西县| 古田县| 大宁县| 祁连县| 江永县| 肃南| 化州市| 闽清县| 镇安县| 绥芬河市| 交口县| 陕西省| 宽城| 海盐县| 蕉岭县| 南涧|