JavaScript 本身不能直接构建桌面应用,但可通过 Electron 框架将 Web 技术打包为跨平台原生程序;其核心是 Chromium 渲染界面、Node.js 提供系统能力,分主进程(管理窗口与生命周期)和渲染进程(展示 UI),通过 IPC 通信;需 preload 脚本安全调用系统 API;可用 electron-builder 打包为独立可执行文件。
JavaScript 本身不能直接构建桌面应用,但它可以通过 Electron 这样的框架,把 Web 技术(HTML、CSS、JS)打包成跨平台的原生桌面程序。Electron 的核心思路是:用 Chromium 渲染界面,用 Node.js 提供系统级能力,两者在同一个进程中协同工作。
Electron 应用由两个关键部分组成:
主进程和渲染进程通过 ipcMain 和 ipcRenderer 模块通信,不能直接共享变量或调用函数。
从零开始只需几个步骤:
npm init -y
npm install --save-dev electron
main.js),设置窗口逻辑:const { app, BrowserWindow } = require('electron')
function createWindow() {
const win = new BrowserWindow({ width: 800, height: 600 })
win.loadFile('index.html') // 加载本地 HTML
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => app.quit())
index.html 作为界面,像普通网页一样写 HTML/CSS/JS;package.json 中添加启动脚本:"main": "main.js",并配置 "scripts": { "start": "electron ." };npm start 即可看到窗口。渲染进程默认无法直接访问 Node.js 或系统 API(出于安全
限制),需要通过主进程中转:
ipcRenderer.send() 发送请求,用 on() 接收响应;dialog.showSaveDialog(),再把路径回传。注意:不要在渲染进程中直接启用 nodeIntegration: true(已不推荐),更安全的方式是使用 contextIsolation: true + preload 脚本暴露受控接口。
开发完成后,用打包工具生成安装包:
electron-builder(功能完整、文档清晰);npm install --save-dev electron-builder;package.json 中添加构建配置(如 target、icon、publish);npx electron-builder,自动输出 Windows(.exe)、macOS(.dmg/.app)、Linux(.AppImage)等格式。生成的产物是独立程序,用户无需安装 Node.js 或 Electron,双击即可运行。