当前位置: 首页 > news >正文

Electron 简单搭建项目

准备工作
  1. 全局安装 node npm
  2. 创建文件夹,并执行 npm init
  3. 安装 electron npm i electron --save-dev
  4. 在 package.json 配置文件中的scripts字段下增加一条start命令:
{"scripts": {"start": "electron ."}
}
  1. 由于配置中的入口文件是 main.js ,需要在根目录下创建 main.js
// main.js
// 这个文件控制主进程,运行在Node.js环境中,控制应用的生命周期,显示原生界面,执行特殊操作并管理渲染器进程。const { app, BrowserWindow } = require('electron')
const path = require('node:path')const createWindow = () => {const mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js') // 预加载 js}})// 加载 index.htmlmainWindow.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()
})
  1. 创建 index.html
<!--index.html-->
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Hello World!</title></head><body><h1>Hello World!</h1>We are using Node.js <span id="node-version"></span>,Chromium <span id="chrome-version"></span>,and Electron <span id="electron-version"></span>.</body>
</html>
  1. 创建 prelode.js
// 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])}
})
  1. 最后执行 npm run start启动应用
http://www.lryc.cn/news/396709.html

相关文章:

  • 旗晟智能巡检机器人:开启工业运维的智能化新篇章
  • vue3的常用 Composition API有哪些?
  • 深度优先算法-DFS(算法篇)
  • C++模块化之内部类
  • k8s-第九节-命名空间
  • 【AI大模型新型智算中心技术体系深度分析 2024】
  • 王道计算机数据结构+插入排序、冒泡排序、希尔排序、快速排序、简单选择排序
  • python爬虫学习(三十三天)---多线程上篇
  • JavaScript 原型链那些事
  • nginx的知识面试易考点
  • 每日Attention学习9——Efficient Channel Attention
  • Java语言程序设计——篇三(1)
  • 基于SpringBoot实现轻量级的动态定时任务调度
  • 夸克升级“超级搜索框” 推出AI搜索为中心的一站式AI服务
  • element-ui el-select选择器组件下拉框增加自定义按钮
  • Python基于you-get下载网页上的视频
  • 大模型/NLP/算法面试题总结3——BERT和T5的区别?
  • vue3项目打包的时候,怎么区别测试环境,和本地环境
  • 小特性 大用途 —— YashanDB JDBC驱动的这些特性你都get了吗?
  • 全网最全的软件测试面试八股文
  • VMware虚拟机配置桥接网络
  • 华为机考真题 -- 攀登者1
  • 深入理解Python密码学:使用PyCrypto库进行加密和解密
  • MMSegmentation笔记
  • Python基础语法:变量和数据类型详解(整数、浮点数、字符串、布尔值)①
  • 【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——红黑树
  • MySQL DDL
  • 从模型到应用:李彦宏解读AI时代的新趋势与挑战
  • C++ STL 随机数用法介绍
  • 容器之docker compose