参考教程:https://www.electronjs.org/docs/tutorial/quick-start
https://www.cnblogs.com/FHC1994/p/10055698.html
说明:官网这个快速入门教程真的写得超好,大大赞一个。
在使用Electron进行开发之前,您需要安装 Node.js。 我们建议您使用最新的LTS版本。
注意:这里如果不装LTS版本会在后面的make步骤时候出问题,所以最好装LTS版,目前亲测ok的版本是node.js - v14.17.1 LTS.
请使用为你平台预构建的 Node.js 安装器来进行安装, 否则,您可能会遇到与不同开发工具不兼容的问题。
要检查 Node.js 是否正确安装,请在您的终端输入以下命令:
node -v
npm -v
这两个命令应输出了 Node.js 和 npm 的版本信息。
注意 因为 Electron 将 Node.js 嵌入到其二进制文件中,你应用运行时的 Node.js 版本与你系统中运行的 Node.js 版本无关。
运行命令行:
mkdir my-electron-app && cd my-electron-app
npm init
init初始化命令会提示您在项目初始化配置中设置一些值 为本教程的目的,有几条规则需要遵循:
entry point 应为 main.js.
author 与 description 可为任意值,但对于应用打包是必填项。
你的 package.json 文件应该像这样:
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "Hello World!",
"main": "main.js",
"author": "Jane Doe",
"license": "MIT"
}
运行命令行:
npm install --save-dev electron
最后,您希望能够执行 Electron。 如下所示,在您的 package.json配置文件中的scripts字段下增加一条start命令:
{
“scripts”: {
“start”: “electron .”
}
}
start命令能让您在开发模式下打开您的应用,命令行运行:
npm start
此时会报错,说找不到入口文件 main.js
创建 main.js:
// Modules to control application life and create native browser window
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow () {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
createWindow()
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
// In this file you can include the rest of your app's specific main process
// code. 也可以拆分成几个文件,然后用 require 导入。
创建 index.html:
Hello World!
Hello World!
We are using Node.js ,
Chromium ,
and Electron .
创建 preload.js:
// All of the Node.js APIs are available in the preload process.
// It has the same sandbox as a Chrome extension.
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])
}
})
此时再运行命令行:npm start
会看到有一个窗口弹出,页面显示 node.js、chomium 等版本内容。
最快捷的打包方式是使用 Electron Forge。
将 Electron Forge 添加到您应用的开发依赖中,并使用其"import"命令设置 Forge 的脚手架:
npm install --save-dev @electron-forge/cli
npx electron-forge import
执行成功后,会有如下反馈:
✔ Checking your system
✔ Initializing Git Repository
✔ Writing modified package.json file
✔ Installing dependencies
✔ Writing modified package.json file
✔ Fixing .gitignore
We have ATTEMPTED to convert your app to be in a format that electron-forge understands.
Thanks for using "electron-forge"!!!
使用 Forge 的 make 命令来创建可分发的应用程序:
npm run make
[email protected] make /my-electron-app
electron-forge make
执行成功后,会有如下提示:
✔ Checking your system
✔ Resolving Forge Config
We need to package your application before we can make it
✔ Preparing to Package Application for arch: x64
✔ Preparing native dependencies
✔ Packaging Application
Making for the following targets: zip
✔ Making for target: zip - On platform: darwin - For arch: x64
同时在源代码根目录的out文件夹下,会有两个文件夹:
my-electron-app-win32-x64
make
其中 make 文件夹下是安装程序,my-electron-app-win32-x64 文件夹下是可执行程序,双击 my-electron-app.exe 即可弹出我们上面写好的网页窗口。
上面的程序打包后,可执行程序文件夹resources下面app里面还是有所有的源码文本文件,可以使用 electron 自带的代码加密工具对代码加密。步骤如下:
npm install asar -g
安装完asar以后,就可以使用asar命令将程序文件打包了。
asar pack ./app app.asar
运行完成后,会发现resources下有一个文件:app.asar,就是 app 文件夹加密后生成的文件。此时可将文件夹 app 改名或删除,然后再运行上面编译好的可执行程序,会发现程序依然能够正常运行,说明无缝加密成功。