electron教程1-创建您的第一个应用程序
官方文档:https://www.electronjs.org/zh/docs/latest/tutorial/tutorial-first-app
一、基本要求
1.检测环境
node -v
npm -v
二、创建您的第一个应用程序
1.初始化 npm 项目
mkdir my-electron-app cd my-electron-app npm init
2.安装完 Electron
npm install electron --save-dev
在初始化并且安装完 Electron 之后,您的 package.json 应该长下面这样。 文件夹中会出现一个 node_modules
文件夹,其中包含了 Electron 可执行文件;还有一个 package-lock.json
文件,指定了各个依赖的确切版本。

{ "name": "my-electron-app", "version": "1.0.0", "description": "Hello World!", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "zyw", "license": "ISC", "devDependencies": { "electron": "^23.1.1" } }
3.创建git 仓库,并初始化仓库
添加 .gitignore 文件
.gitignore
指定了哪些文件不需要 Git 追踪版本。 建议您复制一份 GitHub 的 Node.js gitignore 模板 到您项目的根目录,以避免将 node_modules
文件夹提交到版本控制系统中。

# Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional stylelint cache .stylelintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variable files .env .env.development.local .env.test.local .env.production.local .env.local # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist # vuepress v2.x temp and cache directory .temp .cache # Docusaurus cache and generated files .docusaurus # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # Stores VSCode versions used for testing VSCode extensions .vscode-test # yarn v2 .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.*
4.在根目录的 main.js
文件中写一行代码:
console.log(`hello world!`)
5.在package.json中的第一级花括号中加入
"scripts": { "start": "electron ." },
6.执行代码
npm run start
您的终端应该会输出
7.将网页装载到 BrowserWindow(可以来自本地的 HTML,也可以来自远程 URL。 在本例中,您将会装载本地的文件)
在您项目的根目录中创建一个 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 的 BrowserWindow 上了。 将 main.js
中的内容替换成下列代码

// 在第一行中,我们使用 CommonJS 语法导入了两个 Electron 模块: // app,它控制您的应用的事件生命周期。 // BrowserWindow,它负责创建和管理应用的窗口。 const { app, BrowserWindow } = require('electron') //createWindow() 函数将您的页面加载到新的 BrowserWindow 实例中 const createWindow = () => { const win = new BrowserWindow({ width: 800, height: 600, }) win.loadFile('index.html') } //在应用准备就绪时调用函数 app.whenReady().then(() => { createWindow(); // 如果没有窗口打开则打开一个窗口 (macOS) // 与前二者相比,即使没有打开任何窗口,macOS 应用通常也会继续运行。 在没有窗口可用时调用 app 会打开一个新窗口。 // 为了实现这一特性,可以监听模组的 activate 事件,如果没有任何活动的 BrowserWindow,调用 createWindow() 方法新建一个。 // 因为窗口无法在 ready 事件前创建,你应当在你的应用初始化后仅监听 activate 事件。 要实现这个,仅监听 whenReady() 回调即可。 app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); }); //应用窗口在不同操作系统中的行为也不同。 Electron 允许您自行实现这些行为来遵循操作系统的规范,而不是采用默认的强制执行。 您可以通过监听 app 和 BrowserWindow 模组的事件,自行实现基础的应用窗口规范。 //在 Windows 和 Linux 上,我们通常希望在关闭一个应用的所有窗口后让它退出。 若要在 Electron 中实现这一点,您可以监听 window-all-closed 事件,并调用 app.quit() 来让应用退出。这不适用于 macOS。 app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } });
摘要
Electron 程序是通过 npm 包创建的。 您应将 Electron 依赖安装到 devDependencies
,然后在 package.json 中设置一个脚本来运行。
执行命令后,Electron 程序会运行您在 package.json 文件的 main
字段设置的入口文件。 这个入口文件控制着 Electron 的主进程,后者运行于 Node.js 实例,负责应用的生命周期、展示原生窗口、执行特殊操作和管理渲染进程。
渲染器进程(简称渲染器) 负责展示图形内容。 您可以将渲染的网页指向 web 地址或本地 HTML 文件。 渲染器和常规的网页行为很相似,访问的 web API 也相同。
在教程下一节,我们将会学习如何使用 API 给渲染器提权,以及如何在进程间通信。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
2020-02-24 sql评估已过期
2018-02-24 thinkphp5入口文件对应模块绑定