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

electron介绍

Electron中文文档

Electron是什么?

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。

Electron 允许开发者使用前端技术栈来创建可以在 Windows、macOS 和 Linux 等多个操作系统上运行的桌面应用程序。

Electron 本质上是一个运行在桌面操作系统上的运行时环境,它将 Chromium(一个开源的浏览器引擎)和 Node.js(一个基于 JavaScript 的服务器端运行时环境)结合在一起。这使得开发者可以在应用程序中同时使用前端的 HTML、CSS 和 JavaScript 来构建用户界面,以及使用 Node.js 的强大功能来进行文件系统操作、网络通信等后端任务。

注意
桌面应用程序是一种在个人计算机上运行的软件应用,它直接安装在操作系统上,为用户提供特定的功能和服务。

Electron主要组成部分

  • Chromium 引擎
    • 支持最新特性的chrome浏览器
    • 提供了强大的渲染能力,能够高效地显示网页内容和运行前端代码。它负责显示应用程序的用户界面,包括 HTML 页面、CSS 样式和 JavaScript 交互。
  • Node.js
    • JavaScript运行时环境
    • 允许开发者在应用程序中使用 Node.js 的 API 进行文件操作、网络请求、进程管理等后端任务。这使得应用程序可以与操作系统进行深度交互,实现各种功能,如读写文件、与服务器通信、管理系统资源等。
  • native API
    • 提供统一的原生界面操作能力
    • 开发者可以通过 native API 直接与操作系统进行通信,例如调出操作系统的系统通知等。

Electron 工作流程

Electron 的工作流程主要包括以下几个步骤:

  1. 启动阶段
    • 用户双击 Electron 应用程序的图标或通过其他方式启动应用程序。
    • 操作系统将启动应用程序的可执行文件,这个可执行文件实际上是一个由 Electron 打包工具生成的启动脚本。
    • 启动脚本会加载 Electron 的主进程,主进程通常是一个用 Node.js 编写的脚本文件。主进程负责管理应用程序的生命周期、窗口管理、与操作系统的交互等任务。
  2. 主进程初始化
    • 在主进程中,首先会加载必要的模块和库,如 Node.js 的核心模块、Electron 的核心模块等。
    • 主进程会创建一个或多个浏览器窗口,每个窗口对应一个独立的渲染进程。窗口的创建可以通过编程方式实现,也可以使用预定义的窗口配置文件。
    • 主进程可以设置应用程序的菜单、快捷键、系统托盘图标等用户界面元素,以及处理与操作系统的交互,如文件拖拽、系统通知等。
  3. 渲染进程启动
    • 当主进程创建一个浏览器窗口时,会为每个窗口启动一个独立的渲染进程。渲染进程本质上是一个基于 Chromium 浏览器引擎的实例,它负责渲染应用程序的用户界面。
    • 渲染进程会加载应用程序的 HTML、CSS 和 JavaScript 文件,这些文件可以是本地文件,也可以是通过网络加载的资源。渲染进程中的 JavaScript 代码可以使用前端开发技术,如 React、Vue、Angular 等框架来构建用户界面和实现业务逻辑。
    • 渲染进程可以通过 Electron 提供的 IPC(Inter-Process Communication,进程间通信)机制与主进程进行通信,发送和接收消息,实现跨进程的数据共享和功能调用。
  4. 应用程序运行
    • 用户与应用程序的交互主要发生在渲染进程中的用户界面上。例如,用户点击按钮、输入文本、滚动页面等操作会触发渲染进程中的 JavaScript 事件处理函数。
    • 渲染进程中的 JavaScript 代码可以根据用户的操作执行相应的业务逻辑,如数据处理、网络请求、状态更新等。如果需要与主进程进行交互,例如访问文件系统、调用系统功能等,可以通过 IPC 机制向主进程发送消息,请求主进程执行相应的操作。
    • 主进程接收到渲染进程的请求后,会根据请求的类型执行相应的操作,并通过 IPC 机制将结果返回给渲染进程。渲染进程接收到结果后,可以更新用户界面,显示操作的结果。
  5. 关闭阶段
    • 当用户关闭应用程序的窗口或通过其他方式退出应用程序时,主进程会收到相应的事件通知。
    • 主进程可以执行一些清理工作,如保存应用程序的状态、关闭打开的文件、释放资源等。
    • 主进程退出,应用程序完全关闭。

流程模型

这里借用禹神在b站讲解中用到的图:
在这里插入图片描述
Electron中存在不同的进程,主要分为:主进程渲染进程
主进程管理渲染进程,主进程与渲染进程是可以通信的。

  • 主进程:
    • 可以看做是 package.json 中 main 属性对应的文件
    • 一个应用只会有一个主进程
    • 只有主进程可以 进行GUI的API操作(即调用native API)。如果渲染进程想要调用native API,渲染进程需要先和主进程建立通信,最终还是由主进程进行调用,再把结果传递给渲染进程。
  • 渲染进程
    • Windows中展示的界面通过渲染进程表现
    • 一个应用可以有多个渲染进程

主进程可以通过调用 native API(原生应用程序编程接口)来实现与操作系统的底层交互以及执行特定的系统级任务。

Electron 的架构将主进程设计为负责管理应用程序的生命周期、与操作系统交互以及协调渲染进程。这种设计使得主进程可以直接调用 native API,以实现一些需要底层系统访问的功能,如创建窗口、管理系统托盘、处理文件对话框等。

调用 native API 的方式

  1. 使用 Node.js 的内置模块:Node.js 提供了一些内置模块,如fs(文件系统)、path(路径处理)、child_process(子进程管理)等,这些模块可以直接调用操作系统的相关功能。例如,使用fs模块可以进行文件的读写、创建目录、删除文件等操作。
const fs = require('fs');
fs.writeFileSync('file.txt', 'Hello, world!');
  1. 使用第三方模块:除了 Node.js 的内置模块,还有许多第三方模块可以提供更高级的 native API 访问。例如,electron-native-notification模块可以在 Electron 应用程序中显示系统通知。
const Notification = require('electron-native-notification');
new Notification('Title', { body: 'Message' });
  1. 直接调用系统库:在某些情况下,可以使用 Node.js 的ffi(Foreign Function Interface)模块直接调用系统库中的函数。这需要对底层系统编程有一定的了解,并且需要谨慎使用,因为错误的调用可能会导致应用程序崩溃。
const ffi = require('ffi');
const libc = ffi.Library('libc', {'printf': ['int', ['string']]
});
libc.printf('Hello from native API!');

开发优势

  • 快速开发和迭代
    • 由于使用了前端技术栈,开发者可以利用现有的前端开发工具和流程,如包管理工具(npm、yarn)、代码编辑器(Visual Studio Code、Sublime Text 等)和开发框架(React、Vue、Angular 等),从而加快开发速度。同时,前端技术的热加载和快速迭代特性也使得开发过程更加高效。
  • 丰富的生态系统
    • Electron 受益于前端和 Node.js 的丰富生态系统,开发者可以轻松地集成各种第三方库和工具,以增强应用程序的功能。例如,可以使用 Electron 与现有的后端服务进行集成,或者使用前端的 UI 组件库来快速构建漂亮的用户界面。
  • 易于部署
    • Electron 应用程序可以像普通的桌面软件一样进行打包和分发,开发者可以使用 Electron 的打包工具将应用程序打包成可执行文件,或者发布到应用商店中,以便用户轻松安装和使用。

应用场景

  • 桌面版的 Web 应用
    • 如果已经有一个成熟的 Web 应用,并且希望将其转换为桌面应用,Electron 是一个理想的选择。可以将 Web 应用的代码直接嵌入到 Electron 中,稍加修改即可在桌面环境中运行,同时还可以利用桌面环境的特性,如系统通知、文件拖放等。
  • 生产力工具
    • 开发各种生产力工具,如文本编辑器、图像处理器、代码编辑器等。Electron 的强大功能和灵活性使得开发者可以快速构建功能丰富的工具,满足用户的各种需求。
  • 跨平台桌面应用
    • 对于需要在多个操作系统上运行的应用程序,Electron 提供了一种高效的解决方案。开发者可以编写一次代码,然后在不同的平台上进行测试和部署,大大降低了开发和维护成本。

相关文章:

electron介绍

Electron中文文档 Electron是什么? Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 允许开发者使用前端技术栈来创建可以在 Windows、macOS 和 Linux 等多个操作系统上运行的桌面应用程序。 Electron 本质上是一个运行在桌面操作…...

Redis-持久化

首先,我们明白一个概念, 硬盘>持久 内存>不持久 而Redis是一个内存数据库,不持久,相比于Mysql这样的关系型数据库,最明显的特点是快/效率高 为了保证速度快,数据要保存再内存中,为了持久,存储在硬盘上 所以redis决定: 插入>内存+硬盘(硬盘是为了在re…...

封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)

这是在组件中使用&#xff0c;基于微博语法 <template><wbx-view class"" style"width: 100vw;height: 70vh;"><WBXswiper change"gaibian" :vertical"false" :current"current" indicatorActiveColor"…...

【Ubuntu】minicom安装、配置、使用以及退出

目录 1 安装 2 配置 3 使用 4 退出 minicom是一个串口通信的工具&#xff0c;以root权限登录系统&#xff0c;可用来与串口设备通信。 1 安装 sudo apt-get install minicom 2 配置 使用如下命令进入配置界面&#xff1a; sudo minicon -s 进入配置界面后&#xff0c;…...

MYSQL的监控

1. MySQL服务器都提供了哪几种类型的日志文件&#xff1f;说明每种日志的用途。 Error log&#xff1a;启动、关闭和异常有关的诊断信息 General query log:服务器从客户端收到的所有语句 Slow query log:需要很长时间执行的查询 Audit log:企业版基于策略的审计 Binary…...

CTF ciscn_2019_web_northern_china_day1_web2

ciscn_2019_web_northern_china_day1_web2 BEGIN 拿到题目&#xff0c;先看看 这里发现一个很像提示的东西&#xff0c;然后发现下面是一堆小电视商品&#xff0c;有lv等级和金钱&#xff0c;所以这题的入口可能就是再lv6和这个资金募集上 然后点击下next&#xff0c;看看页…...

linux中vim编辑器的应用实例

前言 Linux有大量的配置文件&#xff0c;其中编辑一些配置文件&#xff0c;最常用的工具就是 Vim &#xff0c;本文介绍一个实际应用的Vim编辑器开发文档的实例。 Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多特性。…...

智慧城市交通管理中的云端多车调度与控制

城市交通管理中的云端多车调度与控制 智慧城市是 21世纪的城市基本发展方向&#xff0c;为了实现智慧城市建设的目标&#xff0c;人们需要用现代化的手段去管理和控制城市中的各种资源和设施。智能交通控制与管理是智慧城市中不可缺少的一部分&#xff0c;因为现代城市交通系统…...

分治(归并排序)

一、基本思路 我们以一个归并排序为例。 . - 力扣&#xff08;LeetCode&#xff09; 归并排序的思想&#xff1a;得到两个有序数组&#xff0c;把两个有序数组合并&#xff0c;传到下一层递归&#xff0c;一直得到两个有序数组&#xff0c;一直合并&#xff0c;最后就能得到有…...

小学生为什么要学英语

小学生需要学习英语的原因有很多&#xff0c;以下是其中的一些原因&#xff08;毕竟我也会累滴(*&#xffe3;▽&#xffe3;*)&#xff09;&#xff1a; 1. 全球化交流&#xff1a;英语是国际交流的通用语言&#xff0c;学习英语可以帮助小学生更好地融入全球化的社会环境&am…...

企业云存储如何收费?企业云存储收费标准

企业云存储如何收费&#xff1f;企业云存储的收费方式因不同的服务提供商和具体的服务选项而异&#xff0c;通常从用户数量、存储容量、功能、混合收费、按需定价、定制化、功能模块等多个方面进行考量。以下是对其多方面收费方式的详细介绍&#xff1a; 1.按用户数量收费 适用…...

一步步教你LangGraph Studio:可视化调试基于LangGraph构建的AI智能体

之前我们在第一时间介绍过使用LangChain的LangGraph开发复杂的RAG或者Agent应用&#xff0c;随着版本的迭代&#xff0c;LangGraph已经成为可以独立于LangChain核心&#xff0c;用于开发多步骤、面向复杂任务、支持循环的AI智能体的强大框架。 近期LangGraph推出了一个使得复杂…...

用SpringBoot打造先进的学科竞赛管理系统

1绪 论 1.1研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制&#xff0c;不仅提高了工作效率&#xff0c;而且大大的提高了其…...

Linux入门攻坚——34、nsswitch、pam、rsyslog和loganalyzer前端展示工具

nsswitch&#xff1a;network service switch 名称解析&#xff1a;name <---> id 认证服务&#xff1a;用户名、密码验证或token验证等 名称解析和认证服务都涉及查找位置&#xff0c;即保存在哪里。如linux认证&#xff0c;passwd、shadow&#xff0c;是在文件中&…...

如何在Excel中快速找出前 N 名,后 N 名

有如下销售额统计表&#xff1a; 找出销售额排前 10 名的产品及其销售额&#xff0c;和销售额排倒数 10 名以内的产品及其销售额&#xff0c;结果如下所示&#xff1a; 前 10 名&#xff1a; spl("E(?1).sort(ProductSales:-1).to(10)",A1:C78)后 10 名&#xff1…...

创意实现!在uni-app小程序商品详情页轮播中嵌入视频播放功能

背景介绍 通过uni-app框架实现商城小程序商品详情页的视频与图片轮播功能&#xff0c;以提升用户体验和增加商品吸引力。通过展示商品视频和图片&#xff0c;用户可以更全面地了解商品细节&#xff0c;从而提高购买决策的便利性和满意度。这种功能适用于各类商品&#xff0c;如…...

WAF,全称Web Application Firewall,好用WAF推荐

WAF&#xff0c;全称Web Application Firewall&#xff0c;即Web应用防火墙&#xff0c;是一种网络安全设备&#xff0c;旨在保护Web应用程序免受各种Web攻击&#xff0c;如SQL注入、跨站脚本&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等。 WAF通…...

docker中搭建nacos并将springboot项目的配置文件转移到nacos中

前言 网上搜索docker中搭建nacos发现文章不是很好理解&#xff0c;正好最近在搭建nacos练手。记录一下整个搭建过程。文章最后附上了一些过程中遇到的问题&#xff0c;大家可以按需要查看。 docker中搭建nacos并将springboot项目的配置文件转移到nacos中 前言1 docker中下拉na…...

概率论原理

智慧挺不喜欢我&#xff0c;他告诉我需要有耐心&#xff0c;答案在后面&#xff1b;而我总想马上得到答案&#xff1b;但它也会给我奖励&#xff0c;因为我总会自己去寻找答案 B站 大大的小番茄 普林斯顿微积分 PDF 一化儿 BILIBILI 泰勒展开式 知乎https://www.zhihu.com…...

MYSQL的安装和升级

MySQL的RPM安装通常分为不同的包&#xff0c;包括Server、Common、Client、Devel、Libs、Libs-compat、Test、Source&#xff0c;请写出上述每个包的功能。 Server&#xff1a;包含MySQL服务器的核心文件和服务。安装此包后可以运行MySQL数据库服务器。 Common&#xff1a;包…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...