Electron介绍

前言

相信很多的前端小伙伴都想过一个问题,web技术是否可以用于开发桌面应用。答案当然是可以的,Electron框架就是其中的一种解决方案。

Electron介绍

Electron是一个使用 JavaScriptHTMLCSS 构建桌面应用程序的框架。

Electron 并不是一门新的技术,自 2013 年开始至今已有 10 年历史了,由Github团队开发。

根据github网站可以看到一直都在更新,2023年就更新了60+小版本更新,6+大版本的更新。(Electron Releases (electronjs.org))

Electron集成了Chrome浏览器内核、Node.js环境以及系统本地原生API的调用接口。即

在这里插入图片描述

  1. Chrome内核为Electron提供了Web开发能力,可以无缝衔接各种Web开发技术如Vue、React。即内嵌浏览器内核
  2. Node.js为Electron提供了访问操作系统的能力。例如文件系统、网络模块。即内嵌Node.js环境。
  3. Native Api,为Electron提供原生的GUI支持。原生的Api这个概念可能优点抽象,原本就是根本的意思。例如在Window环境下,使用Windows提供的GUI开发接口进行开发(如Windows的Win32 AP))。

Electron的应用

Electron是一个跨平台的桌面GUI开发框架。开发一套应用可以在Windows.Linux,macOs多端运行。

Electron的应用:

  1. QQ桌面版本
  2. Visul Studio Code
  3. PostMan
  4. Apifox
  5. drawio-desktop
  6. Xmind
  7. 幕布(mubu)
  8. Typora

怪不得我16G的内存完全不够用,原来其中之一的原因出在这里。

大家还知道哪些应用是用Electron开发的吗?

Electron的优缺点

优点

  1. 上手简单,效果更好。可以使用Web三件套、Vue、React登前端框架直接实现GUI。
  2. 开发速度快。相比传统的桌面开发(例如QT),使用Web技术开发桌面应用速度更快。
  3. 跨平台。开发的桌面应用可以在Windows、Linux、macOs多个平台运行。
  4. 开发文档齐全,适配多种语言,demo小例子一键运行。
  5. 更新、调试更方便。
  6. 开发好的应用可以自动更新。

缺点

  1. 安装包体积大:打包了Chrome内核和Node.js环境,会让安装包体积增大。
  2. 性能较低:相比传统的桌面开发技术(例如C++、C#开发),性能不如前者。
  3. 每个窗口都是一个进程,占用内存。

Electron的发展前景

目前来看Electron的发展前景是良好的,主要是因为其对跨平台桌面应用开发的强大支持和社区的活跃参与。

从开发者团队我们可以看到一年60+小版本的更替,6+个大版本的更替。

Electron框架的使用在业界已经有了一定的普及,它能够让开发者利用熟悉的Web技术来构建桌面应用程序,大大降低了进入门槛。由于使用JavaScript、HTML和CSS等Web技术,几乎所有具备Web开发技能的开发者都能够轻松上手Electron,这对于人才短缺的小型和中型企业尤其有益。

技术决策应该以业务目标为指导,选择正确的技术而不是盲目跟随趋势。Electron可以大大缩短应用的开发时间,一次开发多端运行。Electron应用程序能够在所有主要的桌面操作系统上运行,包括Windows、macOS和Linux

它有着跨平台支持、上手门槛地、开发速度快、自动更新、等特性,我相信会有越来越多的开发者使用它作为桌面端应用程序的开发框架,特别是哪些对于性能要求不高的的桌面应用程序。、

现如今electron正在如火如荼的发展,有人说Eelectron被抛弃了,明显是不现实的。

交流

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS——互斥信号量知识总结及其实战

1互斥信号量的概念 1)互斥信号量:是一个拥有优先级继承的二值信号量,在同步的应用中二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中! 2)优先级继承:当一个互斥信号量正在被一个低优先级的…

python统计分析——直方图(df.hist)

使用dataframe.hist()或series.hist()函数绘制直方图 import numpy as np import pandas as pd from matplotlib import pyplot as plt.dfpd.DataFrame(data{type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9] }) serpd.Serie…

conda虚拟环境搭建和打包,删除,移动等全流程及相关问题汇总

私人笔记无偿分享,更多内容请访问:链接:https://pan.baidu.com/s/19mS5N9XJ_AotF20kUwSA3w?pwdp5kx 提取码:p5kx 复制这段内容后打开百度网盘手机App,操作更方便哦 4.4. anaconda虚拟环境搭建: 网址&am…

Java中的SPI机制

Java中的SPI(Service Provider Interface)机制是一种服务发现机制。它允许服务提供者在运行时被发现和加载,而不是在编译时。这种机制主要用于实现解耦,使得接口的定义与实现可以独立变化,增强了系统的可扩展性和可替换…

[PyTorch][chapter 9][李宏毅深度学习][CNN]

前言: 卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun,目前在Facebook工作,…

小样本学习介绍(超详细)

小样本学习介绍 本文首先介绍了什么是小样本学习,其次介绍了为什么小样本学习的很多文章都采用元学习的方法。目的是通过通俗的解释更加清楚的介绍小样本学习是什么,适合初学者的入门。当然,以下更多的是自己的思考,欢迎交流。 …

莫比乌斯函数

积性函数定义 若gcd(p,q)1,有f(p*q)f(p)*f(q),则f(x)是积性函数 其中规定f(1)1,对于积性函数有:所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …

用开源大语言模型开发的智能对话机器人初版原型验证

用开源大语言模型开发的智能对话机器人初版原型验证 0. 背景1. 初版检证效果展示2. 验证效果总结 0. 背景 同事要想做一个智能对话机器人,特别的需求有有些几点, 通过预置提示词(包括确认事项),让大语言模型用会话式…

OpenAI ChatGPT-4开发笔记2024-02:Chat之text completion

API而已 大模型封装在库里,库放在服务器上,服务器放在微软的云上。我们能做的,仅仅是通过API这个小小的缝隙,窥探ai的奥妙。从程序员的角度而言,水平的高低,就体现在对openai的这几个api的理解程度上。 申…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI (一)elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串,才会显示默认选中对应中文,如果是数字,则显示数字,修改为: handleOpenAddDialog() {this.dialogT…

vue-动态高亮效果

个人练习&#xff0c;仅供参考 实现如下效果&#xff1a;点击某块&#xff0c;某块变成其他颜色。 具体实现代码&#xff1a; 上边&#xff1a; <template><div><h3 style"color: #f69">动态高亮效果</h3><hr> <!-- 对象 -->…

SwiftUI之深入解析如何使用新地图框架MapKit

一、前言 一旦将 App 目标更新到 iOS 17&#xff0c;Xcode 会将任何使用旧的 Map 初始化器的用法标记为已弃用&#xff1a; 会有警告提示&#xff1a;init coordinate region 已在 iOS 17 中弃用。请改用带有 MapContentBuilder 参数的地图初始化器。在 iOS 17 中&#xff0c;…

Java-replaceAll()同时替换多个字符

今天复现了raplaceAll&#xff08;&#xff09;的用法&#xff0c;但是通常都是对一种字符进行替换&#xff0c;我就在想有没有操作可以一次性替换多个不同的字符&#xff0c;百度一搜&#xff0c;果然有。具体情况如下 首先是替换字的 String str1 "小明&#xff0c;小…

案例091:基于微信小程序的农场驿站平台的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Redis (三)

1、redis复制 简单的概括就是主从复制&#xff0c;master以写为主&#xff0c;Slave以读为主&#xff0c;当master数据发生变化的时候&#xff0c;自动将更新的数据异步同步到其他的slave是数据库。 使用这种机制的话&#xff0c;可以做到读写分离&#xff0c;可以减轻主机负担…

14.两数之和

题目 class Solution {public int[] twoSum(int[] nums, int target) {int[] ret {-1,-1};for(int i0;i<nums.length;i) {for(int ji1;j<nums.length;j) {if(nums[i] nums[j] target) {ret[0] i;ret[1] j;}}}return ret;} }

uniapp 无限级树形结构面包屑、单选-多选、搜索、移除功能插件,基于【虚拟列表】高性能渲染海量数据,加入动态高度、缓冲区

hyq-tree-vtw 无限级树形结构面包屑、单选-多选、搜索、移除功能 示例项目 单选-user 单选-任意一项 多选-关联下级 多选-任意一项 已选择数据弹框 说明 本插件需要使用uni-popup、uni-transition用于已选择数据弹框&#xff0c;因此需要有这些依赖,请自行导入本插件基于【虚…

企业培训系统开发:构建灵活高效的学习平台

企业培训系统的开发在当今数字化时代是至关重要的。本文将介绍一些关键技术和代码示例&#xff0c;以帮助您构建一个灵活、高效的企业培训系统。 1. 技术选型 在开始企业培训系统的开发之前&#xff0c;首先需要选择合适的技术栈。以下是一个基本的技术选型示例&#xff1a;…

Python(wordcloud):根据文本数据(.txt文件)绘制词云图

一、前言 本文将介绍如何利用python来根据文本数据&#xff08;.txt文件&#xff09;绘制词云图&#xff0c;除了绘制常规形状的词云图&#xff08;比如长方形&#xff09;&#xff0c;还可以指定词云图的形状。 二、相关库的介绍 1、安装相关的库 pip install jieba pip i…