Appearance
Electron
环境搭建
首先要安装 Node.JS。安装好以后用下面的指令检测一下
node -v npm -v
注意,electron内嵌nodejs。这部分与您安装的node.js是相互独立的。
安装electron
找个空文件夹,输入下面的命令
mkdir my-electron-app cd my-electron-app yarn init
mkdir是创建文件夹的指令。cd是进入某个文件夹的指令。
可以合并为一条 mkdir my-electron-app && cd my-electron-app。但有可能会报错
您的 package.json 应如下所示
json
{
"name": "my-electron-app",
"version": "1.0.0",
"main": "main.js",
"license": "MIT"
}
main入口默认是index.js,需要改为main.js。另外,在发布时应当加上author和description,用于表明作者和应用概述。
然后,安装electron
yarn add --dev electron
基本项目
创建两个文件:main.js文件和index.html文件。
在html中写入
html
<!--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'">
<title>你好!</title>
</head>
<body>
<h1>你好!</h1>
我们正在使用 Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
和 Electron <span id="electron-version"></span>.
<!-- 您也可以此进程中运行其他文件,例如vue、react -->
<script src="./renderer.js"></script>
</body>
</html>
在main.js中写入
javascript
// main.js
// Modules to control application life and create native browser window
const { app, BrowserWindow } = require('electron')
const path = require('node:path')
const createWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// 加载 index.html
mainWindow.loadFile('index.html')
// 打开开发工具
// mainWindow.webContents.openDevTools()
}
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
createWindow()
app.on('activate', () => {
// 在 macOS 系统内, 如果没有已开启的应用窗口
// 点击托盘图标时通常会重新创建一个新窗口
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此, 通常
// 对应用程序和它们的菜单栏来说应该时刻保持激活状态,
// 直到用户使用 Cmd + Q 明确退出
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})
// 在当前文件中你可以引入所有的主进程代码
// 也可以拆分成几个文件,然后用 require 导入。
在 preload.js 中写入
javascript
// preload.js
// 所有的 Node.js API接口 都可以在 preload 进程中被调用.
// 它拥有与Chrome扩展一样的沙盒。
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
for (const dependency of ['chrome', 'node', 'electron']) {
replaceText(`${dependency}-version`, process.versions[dependency])
}
})
打包发布
使用electron-forge进行打包。先安装依赖
yarn add --dev @electron-forge/cli
执行命令进行打包
注意!!打包前,package.json中的author和description要补充完整
npx electron-forge import