Electron+Vue3配置-搭建项目

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年12月8日 (五) 09:41的版本 (创建页面,内容为“ <span id="创建-vue-项目"></span> == 创建 Vue 项目 == 确保你安装了最新版本的 Node.js,然后在命令行中运行以下命令: <pre>npm init vue@latest </pre> <br> 这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示,本项目只做示例,所以只选了 Vue Router : <pre>✔ Project name: … electron_vue3_test…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

创建 Vue 项目

确保你安装了最新版本的 Node.js,然后在命令行中运行以下命令:

npm init vue@latest 


这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示,本项目只做示例,所以只选了 Vue Router :

✔ Project name: … electron_vue3_test
✔ Add TypeScript? … No
✔ Add JSX Support? … No
✔ Add Vue Router for Single Page Application development? … Yes
✔ Add Pinia for state management? … No
✔ Add Vitest for Unit Testing? … No
✔ Add Cypress for both Unit and End-to-End testing? … No
✔ Add ESLint for code quality? … No
✔ Add Prettier for code formatting? … No


在项目被创建后,通过以下步骤安装依赖并启动开发服务器:

cd <your-project-name>
npm install
npm run dev


执行后终端显示如下:

VITE v3.1.2  ready in 333 ms

➜  Local:   http://localhost:5173/
➜  Network: use --host to expose


安装 Electron

执行以下命令安装 Electron :

npm install electron --save-dev


如果安装过程中卡住,可尝试设置以下环境变量

ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"


运行 Electron

在根目录创建 electron 文件夹,新建 index.html 文件,添加如下代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta
    http-equiv="Content-Security-Policy"
    content="default-src 'self'; script-src 'self'"
    />
    <meta
    http-equiv="X-Content-Security-Policy"
    content="default-src 'self'; script-src 'self'"
    />
    <title>Hello from Electron renderer!</title>
</head>
<body>
    <h1>Hello from Electron renderer!</h1>
    <p>👋</p>
</body>
</html>


在 electron 目录下新建文件 main.js,并添加如下代码:

const { app, BrowserWindow } = require('electron')
const path = require("path")

const createWindow = () => {
const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
})

// 使用 loadFile 加载 electron/index.html 文件
mainWindow.loadFile(path.join(__dirname, "./index.html"));
}

// 在应用准备就绪时调用函数
app.whenReady().then(() => {
createWindow()
})


修改 package.json 文件,指定 electron/main.js 为 Electron 的入口文件,并添加 electron:dev 命令以开发模式运行 Electron:

{
    "main": "electron/main.js",
    "scripts": {
        "electron:dev": "electron ."
    }
}

然后打开终端,执行 npm run electron:dev ,Electron 运行成功


Vue 和 Electron 结合

删除 electron/index.html 文件,修改 electron/main.js 文件代码如下:

const { app, BrowserWindow } = require('electron')
// const path = require("path")

const createWindow = () => {
const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
})

// 主要改了这里
// mainWindow.loadFile(path.join(__dirname, "./index.html"));
// 使用 loadURL 加载 http://localhost:5173 ,也就是我们刚才创建的 Vue 项目地址
// 5173 改为你 Vue 项目的端口号
mainWindow.loadURL("http://localhost:5173/");
}

app.whenReady().then(() => {
createWindow()
})


打开终端,执行 npm run dev 启动 Vue 项目,再新建一个终端,执行 npm run electron:dev 启动 Electron ,即可成功启动。


合并命令

这样每次启动项目需要分别执行两个命令,有些麻烦,我们使用 concurrently把它们合并成一个命令。


执行以下命令,安装 concurrently:

npm install concurrently --save-dev


修改 package.json 文件中的 electron:dev 命令,同时执行 vite 和 electron . 两个命令,用引号将单独的命令括起来,并使用 \ 转义引号,代码如下:

// package.json
{
    "scripts": {
        "electron:dev": "concurrently vite \"electron .\""
    }
}

重新执行 npm run electron:dev ,即可成功显示。