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

electron教程(一)创建项目

一、方式①

根据官网描述将electron/electron-quick-start项目克隆下来并启动

electron/electron-quick-start地址:

GitHub - electron/electron-quick-start: Clone to try a simple Electron app

git clone https://github.com/electron/electron-quick-start.git

一、方式②

创建自己的项目

1.cmd打开运行窗口
mkdir demo-electron-app && cd demo-electron-app
npm init
2.根据提示确认

 3.修改package.json文件
{"name": "demo-electron-app","version": "1.0.0","description": "my-app","main": "main.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "ljx","license": "ISC"
}

4.安装electron 

npm容易报错,建议用cnpm

npm install --save-dev electron

package.json文件中添加运行命令

 "start": "nodemon --watch main.js --exec npm run build", // 如果没安装nodemon,这行不要"build": "electron ."

建议:在node环境中,安装nodemon,官网介绍,自行了解:诺德蒙 - NPM (npmjs.com)

安装步骤:

  1. win+r,输入cmd,打开运行窗口
  2. 输入npm install -g nodemon
  3. nodemon -v检查是否安装成功

5.创建index.html文件 
<!DOCTYPE html>
<html lang="en"><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>我的app</title>
</head><body><h1>Hello World!</h1>我们正在使用 Node.js <span id="node-version"></span>,Chromium <span id="chrome-version"></span>,and Electron <span id="electron-version"></span>.
</body></html>
6.创建main.js文件

主进程文件

const { app, BrowserWindow } = require('electron')
const path = require('node:path')// 创建窗口
const createWindow = () => {// 设置窗口大小const win = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js')}})// 当前窗口显示的页面win.loadFile('index.html')
}// app启动后创建窗口
app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 关闭所有窗口时退出应用
app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()
})
7.创建preload.js文件

预加载文件,通过 contextBridge 定义一个全局变量 versions 的示例如下:

const { contextBridge } = require('electron/renderer')contextBridge.exposeInMainWorld('versions', {node: () => process.versions.node,chrome: () => process.versions.chrome,electron: () => process.versions.electron
})
8.创建renderer.js文件

通过全局变量 versions 可以获取浏览器/node/electron版本信息,并将这些信息插入到html中

const information = document.getElementById('info')
information.innerText = `本应用正在使用 Chrome (v${versions.chrome()}), Node.js (v${versions.node()}), 和 Electron (v${versions.electron()})`

 在index.html文件中添加id=info的标签,并引入render.js文件

<div id="info"></div><script src="./renderer.js"></script>
 9.启动看效果
npm run build

相关文章:

  • uniapp + vue3 + Script Setup 写法变动 (持续更新)
  • IP白名单及其作用解析
  • 获取HTML元素的offsetParent属性
  • 传输线在阻抗匹配时串联端接电阻为什么要靠近发送端
  • Java_多线程:线程池
  • Spring Boot与Apache Kafka的深度集成
  • 如何利用React和Python构建强大的网络爬虫应用
  • leetcode-20-回溯-切割、子集
  • 5G赋能安防视频监控:EasyCVR视频汇聚融合创新技术,共筑多场景安全防线
  • 学习springAOP
  • 重写父类方法、创建单例对象 题目
  • 发布一个Yii2扩展把debug信息存储到MongoDB中
  • el-scrollbar组件使用踩坑记录
  • 求推荐几款http可视化调试工具?
  • HNU_ACM:10415分硬币(动态规划)
  • 【Amaple教程】5. 插件
  • Apache的基本使用
  • CSS盒模型深入
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python3爬取英雄联盟英雄皮肤大图
  • scala基础语法(二)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 番外篇1:在Windows环境下安装JDK
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用Swoole加速Laravel(正式环境中)
  • 正则学习笔记
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • #微信小程序:微信小程序常见的配置传值
  • (六)Hibernate的二级缓存
  • (区间dp) (经典例题) 石子合并
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)React组件、useState、组件样式
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)u-boot-nand.bin的下载
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net 7 上传文件踩坑
  • .NET C# 操作Neo4j图数据库
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 项目指定SDK版本
  • .NET 使用 XPath 来读写 XML 文件
  • .Net面试题4
  • .NET命名规范和开发约定
  • /etc/fstab和/etc/mtab的区别
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @PreAuthorize与@Secured注解的区别是什么?
  • [\u4e00-\u9fa5] //匹配中文字符
  • [2]十道算法题【Java实现】
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++]C++类基本语法