【Electron学习笔记(二)】基于Electron开发应用程序

devtools/2024/11/28 18:31:41/

基于Electron开发本地应用程序

    • 基于Electron开发本地应用程序
    • 前言
    • 正文
    • 1、创建 pages 目录
    • 2、创建 index.html 文件
    • 3 、创建 html.css 文件
    • 4 、main.js里引入页面
    • 5 、运行 start 命令
    • 6 、启用开发者模式
    • 7 、解决内容安全策略
    • 8、完善窗口行为
    • 9、配置自动重启,保存后自动热更新完善窗口行为

基于Electron开发本地应用程序

前言

本文旨在帮助初学者快速上手Electron,通过一步步的示例操作,展示如何从头开始创建一个简单的本地应用程序。我们将从项目的基本结构搭建开始,包括创建HTML、CSS和JavaScript文件,到配置Electron主进程以加载这些资源。此外,我们还将探讨如何启用开发者模式以便于调试,如何解决内容安全策略(CSP)可能带来的问题,以及如何完善窗口行为,使其更加符合用户的期望。
更进一步,为了提升开发效率,我们将配置项目以实现自动重启和热更新功能。这意味着在开发过程中,每当代码保存后,应用程序将自动重新加载,无需手动重启应用,从而大大加快了迭代速度。

正文

1、创建 pages 目录

在这里插入图片描述

2、创建 index.html 文件

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>index页面</title><link rel="stylesheet" href="./html.css"></head><body><h1>欢迎学习Electron开发</h1></body>
</html>

在这里插入图片描述

3 、创建 html.css 文件

javascript">h1 {background-color: gray;color: orange;
}

在这里插入图片描述

4 、main.js里引入页面

javascript">const {app,BrowserWindow}=require("electron") app.on("ready",()=>{const win = new BrowserWindow({width:800,height:600,autoHideMenuBar:true})//引入页面win.loadFile("./pages/index/index.html")
})

5 、运行 start 命令

在终端输入:npm start
在这里插入图片描述
在这里插入图片描述

6 、启用开发者模式

Ctrl + Shift + I 启用开发者模式
在这里插入图片描述

切换控制台 Console,会发现有一个警告:
在这里插入图片描述
这是因为有内容安全策略警告,就是配置在网页中能加载哪些资源。

7 、解决内容安全策略

可以参考 内容安全策略(CSP)
在 index.html 中加入:

        <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>index页面</title><link rel="stylesheet" href="./html.css"><meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"></head><body><h1>欢迎学习Electron开发</h1></body>
</html>

再次运行后,不会有警告出现:
在这里插入图片描述

8、完善窗口行为

对于 Windows 和 macOS 系统在处理一些操作时是有差异存在的

  1. Windows 和 Linux 平台窗口特点:应用所有窗口都关闭,那么应用自动退出
  2. macOS 平台窗口特点:即使在没有打开任何窗口的情况下也可以继续运行,并且在没有窗口可用的情况下激活应用时会打开新的窗口

执行代码可以参考官方文档:管理窗口的生命周期

依据代码改写 main.js:

javascript">const {app,BrowserWindow}=require("electron") function createWindow(){const win = new BrowserWindow({width:800,height:600,autoHideMenuBar:true})//引入页面win.loadFile("./pages/index/index.html")
}
// 当app准备好后,执行createWindow创建窗口
app.on("ready",()=>{createWindow()// 当应用被激活时app.on('activate', () => {// 如果当前应用没有窗口,则创建一个新的窗口if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})
// 当所有窗口都关闭时
app.on('window-all-closed', () => {// 如果所处平台不是mac(darwin),则退出应用if (process.platform !== 'darwin') app.quit()})

9、配置自动重启,保存后自动热更新完善窗口行为

javascript">npm i nodemon -D

在这里插入图片描述
package.json 里重写 start 命令

javascript"> "start": "nodemon --exec electron ."

配置 nodemon.json 规则

javascript">{"ignore":["node modules","dist"],"restartable":"r","watch":["*.*"],"ext":"html,js,css"
}

配置好以后,当代码修改后保存,应用会自动重启
在这里插入图片描述


http://www.ppmy.cn/devtools/137732.html

相关文章

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心&#xff0c;它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例&#xff0c;详细讲解其 时钟树结构&#xff08;Clock Tree&#xff09;。通过理解时钟源、分配与预分频器设置&#xff0c;可以灵活配置系统时钟以实现高性…

使用OpenCV实现视频背景减除与目标检测

摘要 背景减除是计算机视觉中一种常用的技术&#xff0c;用于从视频流中分离前景对象。本文将介绍如何利用OpenCV库实现视频背景减除&#xff0c;并进一步通过形态学操作和轮廓检测来识别视频中的运动物体。通过一个具体的代码示例&#xff0c;我们将逐步演示整个流程。 1. 引…

利用爬虫爬取网页小说

需求分析 安装requests包 pip install requests目录采集地址&#xff1a; h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / https://www.3bqg.cc/book/60417/ https://www.3bqg.cc/book/60417/ 章节采集地址&#xff1a; h t t p s : / / w w w . 3 b q g . c …

详细描述一下Elasticsearch更新和删除文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch更新和删除文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch更新和删除文档的过程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 E…

C++-qt经验

qt下载安装 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 qt项目打包成软件 QT项目打包成软件进行发布的三种方式_qt打包-CSDN博客

生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢

生产环境中&#xff0c;nginx 最多可以代理多少台服务器&#xff0c;这个应该考虑哪些参数 &#xff1f;怎么计算呢 关键参数计算方法评估步骤总结 在生产环境中&#xff0c;Nginx最多可以代理的服务器数量并没有一个固定的限制&#xff0c;它取决于多个因素&#xff0c;包括Ng…

Oracle-decode和case when的用法

-- case when 通用 功能比decode强大多了 -- decode 可以实现的 CASE WHEN都可以实现 -- decode 针对一个字段的值去判断 SELECT e.* ,DECODE(e.job, SALESMAN,销售员, PRESIDENT,董事长 ,分析师; --剩下的都是分析师 如果是确定的不建议这么写 ) AS new_job FROM em…

英语知识在线平台:Spring Boot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…