Electron 应用
大约 2 分钟
Electron 应用
前言
什么的 Electron?
Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、macOS 和 Linux 的跨平台应用。
搭建 Web 应用桌面端壳子
初始化项目
在一个空白目录下进行操作
// 初始化npm项目
npm init -y
// 查看npm源
npm config get registry
// 设置淘宝源
npm config set registry https://registry.npmmirror.com/
// 下载node18
nvm install 18.0.0
// 使用node18
nvm use 18.0.0
// 查看当前node版本
node -v
依赖安装
electron
// 下载electron
npm install --save-dev electron
Electron Forge
// electron打包分发库
npm install --save-dev @electron-forge/cli
// 引入到项目中
npx electron-forge import
目录结构 && 依赖

package.json
{
"name": "electron-tools",
"version": "1.2.0",
"description": "Electron集成Vue",
"main": "main.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make"
},
"keywords": [
"Electron",
"Vue3",
"Tools"
],
"author": "Sunshine",
"license": "ISC",
"devDependencies": {
"@electron-forge/cli": "^7.2.0",
"@electron-forge/maker-deb": "^7.2.0",
"@electron-forge/maker-rpm": "^7.2.0",
"@electron-forge/maker-squirrel": "^7.2.0",
"@electron-forge/maker-zip": "^7.2.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.2.0",
"electron": "^28.1.1"
},
"dependencies": {
"electron-squirrel-startup": "^1.0.0"
}
}
codes
main.js(主入口)
/**
* app:控制应用程序的事件生命周期
* BrowserWindow:创建和管理应用程序窗口
*/
const { app, BrowserWindow } = require("electron");
const path = require("path");
// 构建窗口
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
// 预加载脚本
// __dirname:指向当前正在执行脚本的路径
preload: path.join(__dirname, "preload.js")
}
});
// 加载网页地址
win.loadURL('http://60.204.186.245/')
// 加载html文件
// win.loadFile("./dist/index.html");
};
// 当app的whenReady()触发后再生成窗口
app.whenReady().then(() => {
createWindow();
// 检测当前窗口是否打开成功,若未打开成功再次调用
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
// 监听关闭全部窗口事件
app.on("window-all-closed", () => {
// 非macOS系统,darwin代表macOS
if (process.platform !== "darwin") app.quit();
});
preload.js(预加载文件)
/**
* 预加载脚本
* contextBridge:定义全局对象,定义给内部使用
* ipcRenderer:在渲染进程中向主进程发送消息,并接收来自主进程的回复
*/
const { contextBridge, ipcRenderer } = require("electron");
// 定义一个全局对象versions
contextBridge.exposeInMainWorld("versions", {
// 将应用中的 Chrome、Node、Electron 版本号暴露至渲染器
node: () => process.versions.node,
chrome: () => process.versions.chrome,
electron: () => process.versions.electron,
});
命令行
// 启动本地服务
yarn start
// 打包
yarn make
最终效果


Loading...
