
软件大小
108 MB-
总计下载
33 次 软件语言
多国语言推荐等级
适用芯片
Intel
Electron 是GitHub发布的跨平台桌面应用开发工具,支持Web技术开发桌面应用,其本身是基于C++开发的,GUI核心来自于Chrome,而JavaScript引擎使用v8。
Electron 发行说明
突发的变化
crashReporter API现在由Linux上的Crashpad提供支持。
desktopcapture的用法。呈现程序进程中的getSources API已弃用,将被删除。
核心技术
Electron = Chromium + Node.js + Native APIs
Chromium:
Chromium 是 Google 为发展 Chrome 浏览器而启动的开源项目,Chromium 相当于 Chrome 的工程版或称实验版,新功能会率先在 Chromium 上实现,待验证后才会应用在Chrome 上,故 Chrome 的功能会相对落后但较稳定。
Chromium为Electron提供强大的UI能力,可以在不考虑兼容性的情况下开发界面。
Node.js:
Node 是一个让 JavaScript 运行在服务端的开发平台,Node 使用事件驱动,非阻塞I/O 模型而得以轻量和高效。
单单靠Chromium是不能具备直接操作原生GUI能力的,Electron内集成了Nodejs,这让其在开发界面的同时也有了操作系统底层 API 的能力,Nodejs 中常用的 Path、fs、Crypto 等模块在 Electron 可以直接使用。
Native API:
为了提供原生系统的GUI支持,Electron内置了原生应用程序接口,对调用一些系统功能,如调用系统通知、打开系统文件夹提供支持。
在开发模式上,Electron在调用系统API和绘制界面上是分离开发的,下面我们来看看Electron关于进程如何划分。
优点
1. Electron 开发效率高
相较于基于 C++ 库开发桌面软件来说,基于 Electron 开发更容易上手且开发效率更高。
由于 JavaScript 语言是一门解释执行的语言,所以 C++ 语言固有的各种问题都不再是问题。
比如:
- C++ 没有垃圾回收机制,开发人员要小心翼翼地控制内存,以免造成内存泄漏;
- C++ 语言特性繁多且复杂,学习难度曲线陡峭,需要针对不同平台进行编译,应用分发困难。
2. Electron 执行效率高
在执行效率上,如果前端代码写得足够优秀,Electron 应用完全可以做出与 C++ 应用相媲美的用户体验,Visual Studio Code 就是先例。
另外,Node.js 本身也可以很方便地调用 C++ 扩展,Electron 应用内又包含 Node.js 环境,对于一些音视频编解码或图形图像处理需求,可以使用 Node.js 的 C++ 扩展来完成。
3. 无需考虑兼容性问题
在完成 Web 前端开发工作时,开发者需要考虑很多浏览器兼容的问题,比如:用户是否使用了低版本的 IE 浏览器,是否可以在样式表内使用 Flexbox(弹性盒模型)等。这些问题最终会导致前端开发者束手束脚,写出一些丑陋的兼容代码以保证自己的应用能在所有终端表现正常。
但由于 Electron 内置了 Chromium 浏览器,该浏览器对标准支持非常好,甚至支持一些尚未通过的标准,所以基于 Electron 开发应用不会遇到兼容问题。
4. 基于 JavaScript 生态
随着 Web 应用大行其道,Web 前端开发领域的技术生态足够繁荣。Electron 可以使用几乎所有的 Web 前端生态领域及 Node.js 生态领域的组件和技术方案。截至本文发布时,发布到 http://npmjs.com 平台上的模块已经超过 90 万个,覆盖领域广,优秀模块繁多且使用非常简单方便。
5. Electron 可以使用操作系统接口
Web 前端受限访问的文件系统、系统托盘、系统通知等,在 Electron 技术体系下均有 API 供开发者自由使用。
不足
1. 打包后的应用体积巨大
一个功能不算多的桌面应用,通过 electron-builder 压缩打包后至少也要 100MB。如果开发者不做额外的 Hack 工作的话,用户每次升级应用程序,还要再下载一次同样体积的安装包,这对于应用分发来说是一个不小的负担。但随着网络环境越来越好,用户磁盘的容积越来越大,此问题给用户带来的损失会慢慢被削弱。
2. 开发复杂度较大
跨进程通信是基于 Electron 开发应用必须要了解的知识点,虽然 Electron 为渲染进程提供了 remote 模块来方便开发人员实现跨进程通信,但这也带来了很多问题,比如某个回调函数为什么没起作用、主进程为什么报了一连串的错误等,这往往给已经入门但需要进阶的开发者带来困惑。
3. 安全性问题
Electron 把一些有安全隐患的模块和 API 都设置为默认不可用的状态,但这些模块和 API 都是非常常用的,因此有时开发者不得不打开这些开关。但是,一旦处理不当,就可能导致开发的应用存在安全隐患,给开发者乃至终端用户带来伤害。Electron 也有单独的一章讲述安全问题。
4. 资源消耗较大
底层基于的 Chromium 浏览器一直以来都因资源占用较多被人诟病,目前来看这个问题还没有很好的解决办法,只能依赖 Chromium 团队的优化工作。
5. 版本发布过快
为了跟上 Chromium 的版本发布节奏,Electron 也有非常频繁的版本发布机制,每次 Chromium 改动,都可能导致 Electron 出现很多新问题,甚至稳定版本都有很多未解决的问题。
除了以上这些问题外,Electron 还不支持老版本的 Windows 操作系统,比如 Windows XP。在中国还有一些用户是使用 Windows XP 的,开发者如果需要面向这些用户,应该考虑使用其他技术方案(比如:NW.js)。
特性
添加
添加了'dom-ready'事件到WebFrameMain,当框架的文档准备好时它会发出。
添加了'frame-created'事件到WebContents,当一个框架在页面中被创建时它会发出。
添加WebHID支持。
增加了. sendtoframe () / frameId到'ipc-message'事件。
添加了 'did-redirect-navigation'事件。
增加了配置DNS-over-HTTPS的app.configureHostResolver API。
添加命令行。removeSwitch允许应用程序从Chromiums内部命令行表示中删除命令行开关。
为context-menu事件的params对象添加了frame属性。
添加isIssuedByKnownRoot到ses。setCertificateVerifyProc回调。
添加isMainFrame参数到'certificate-error'事件。
增加了safeStorage字符串加密API。
增加了dialog.showMessageBox() / dialog.showMessageBoxSync() textWidth选项。
添加了WebContents . fromdevtoolstargetid (targetId)从关联的Chrome DevTools协议targetId查找WebContents实例。
增加了一个电子熔断器,用于加强应用程序加载的app.asar文件的代码签名。需要最新的asar模块。
在打包的应用程序中添加了禁用NODE_OPTIONS和——inspect调试参数的fuse。
添加了新的数据参数到app.requestSingleInstanceLock()。
在Windows上增加了对Windows控制覆盖的支持。
增加对U2F Web API的支持。
增加了ipcrender . sendsync()在没有监听器的情况下调用ipcMain时的警告。
改进
除了权限检查处理程序之外,还开始为媒体请求的权限请求处理程序传递securityOrigin的详细信息。
点击PDF中的超链接现在可以实现您所期望的功能。
设置超过最大允许长度的崩溃键名时发出警告。
WebContents默认启用沙箱,不使用Node或preload。
NativeImage对象现在可以通过IPC序列化。
crashReporter API现在由Linux上的Crashpad提供支持。
删除/弃用
desktopcapture的用法。呈现程序进程中的getSources API已弃用,将被删除。
修复
启用对navigator.keyboard.lock()的支持。
固定背景透明度回归。
修正了BrowserView.setBackgroundColor()不能正常工作的问题。
修正了一些透明窗口会以白色背景显示的问题。
修正了webContents中透明度不总是正确设置的问题。
修正了一个错误的问题,在设置了活力类型的窗口会有一个白色而不是透明的背景。
修正了posix在将列表传递给app.requestSingleInstanceLock(additionalData) API时的行为。
修复了浏览器进程中UAF导致的webview创建崩溃。
修复了在macOS上使用单例api时的崩溃问题。
固定分离的DevTools窗口不关闭时,与toggleDevTools角色的菜单项被触发。
固定的imageAnimationPolicy不被尊重。
拥有一个安全的CSP将不再导致CSP违规警告出现在控制台中。
~ /。如果config/{App Name}在unix系统中是一个符号链接,它将不再被错误地删除。
改变了WebHID使用disable- hide -blocklist标志来启用FIDO设备。
修正了webview在发出“context-menu”事件时的“Failed to serialize arguments”错误。
修复了加密DST根CA X3证书过期的问题。
修正了clipboard. writebuffer (), clipboard. readbuffer()和clipboard.read()操作平台特定的剪贴板格式的能力。
修正了macOS上无框架窗口的documenttedted状态不更新关闭按钮。
修正了一个JavaScript异常从webContents如果渲染帧被处置在WebFrameMain,重置render_frame_disposed_的值后更新渲染帧主机。
修正了navigator.fonts.query()的崩溃。
修复了当SharedArrayBuffer被禁用时repl崩溃的问题。
修正了进程崩溃的问题。exit,并启用nativeWindowOpen。
修复了一个崩溃时,浏览器窗口关闭后,其webContents被破坏。
修正了在Windows和Linux的本地文件对话框中选择文件时的崩溃。
修正了在Windows上可拖动区域可能发生的崩溃。
修正了在设置本机主题时可能发生的崩溃。themeSource macOS。
修复了在service worker中初始化Node.js时跟踪代理相关的崩溃。
修复了Mac上一个应用程序无法使用桌面捕获或getMediaSourceId api捕获自己的窗口的问题。
修正了当启用日志记录时窗口出现空控制台窗口的问题。
修正了webView中出现的一个问题,如果用户使用esc退出全屏,而不是单击进入webView,则不会触发leave-html-full-screen事件。
修正了BrowserView拖动行为与MacOS窗口拖动不一致的问题。
修正了在某些情况下BrowserView webContents会出现不加载的问题。
修正了在包含一个逗号的文件名附件中,Content-Disposition文件名会在第一个逗号处被错误截断的问题。
修正了MediaMetadata不能正常工作的问题。
修正了app.getPath('crashDumps')在Linux中返回错误路径的问题。
修正了clipboard.read()可能导致自定义剪贴板格式崩溃的问题。
修正了在macOS上最大化窗口时指定的宽高比可能不正确的问题。
修正了当x或y坐标为负(屏幕外)时背景颜色不能正确应用于BrowserViews的问题。
修正了在Linux上文件选择器中的按钮标签不正确本地化的问题。
修正了在BrowserWindow中更改可拖动区域会不正确地影响附加的BrowserView的问题。
修正了在macOS上多次调用browserwindow . setresizable()会导致缩放按钮被错误地禁用的问题。
修正了设置高宽比的非可调整大小的非全屏窗口可能会返回错误的isMaximized()结果的问题。
修正了一个无法立即拖动失焦的BrowserViews的问题。
修正了一些调用加密的问题。使用BoringSSL不支持的算法创建的createPrivateKey在调用方法的返回值时导致崩溃。
修正了当showArrowButtons被启用时TouchBarScrubber崩溃的问题,如果项目是一个空数组。
修正了在macOS上用titlebarStyle切换documenttedted状态的问题:'hiddenInset'无意中移动了交通灯的位置。
修正了未停靠的开发工具在Windows上无法调整大小的问题。
修正了一个问题,导致打印设置不能正常工作时,打印静默。
修复了当渲染帧被破坏时WebContents::MessageTo的潜在崩溃。
修复了在无框架窗口中导致鼠标点击不被处理的bug。
修正了调整大小禁用后页面周围的黑色边框。
修正了在Windows 10中,当屏幕捕获受内容保护的BrowserWindow时出现黑窗的问题。
修正了子窗口没有继承正确的透明度和背景颜色设置。
固定的剪贴板。再一次像clipboard。readbuffer一样工作。
修复了破坏WebContents时由double free造成的崩溃。
修复了在GTK打开对话框时试图预览巨大的图像文件时崩溃的问题。
修正了Windows 7上GetHostNameW导致的崩溃。
修复了v8由于(Check failed: !regexp_stack_->is_in_use())导致的崩溃。
固定崩溃时改变缩放级别的webview。
修复了在异步对话框api之后立即使用同步对话框api时的崩溃。
修复了GTK对话框中的默认标签文本。
修正了在安全网站上设置不安全cookie时使用的默认设置。
修正了跟踪日志中带有无效时间戳的事件。
修正了macos11上无框窗口交通灯位置错误的问题。
修正了不可调整大小的无框窗口无法拖动的问题。
修正了macOS上的媒体键globalShortcuts问题。
修复了navigator.serial.getPorts()返回之前选择的端口的问题。
修正了调用window时可能出现的'Object has been destroyed'错误。使用setWindowOpenHandler打开一个框架名。
修正了当程序关闭可拖动的无帧子窗口时可能发生的崩溃。
修复了updatedraggablregions罕见的崩溃。
修正了在禁用LogJsConsoleMessages特性时,一些控制台消息仍然被打印到日志中。
修正了windows 32位版本下v8的堆栈溢出崩溃问题。
固定标题栏显示在简单的全屏模式。
固定透明无框架窗口有一个不透明的背景时,打开在最大状态。
修正了调用setContentProtection时的窗口框架故障。
生成有效的配置。在Node.js头文件中。
修复了在Mac上选择和打开本地文件对话框时崩溃的问题。
从Mac苹果商店中移除几个Chromium私有企业api。
其他的变化
反端口修复1251688,1219656。
改变Web串行使用ses。setDevicePermissionHandler允许开发人员更多地控制Web Serial权限。
Web Serial API不再是实验性的。
下载列表
- OpenJS Electron / v32.1.2 0
下载须知
1、免责声明:威锋下载 所发布的一切软件、游戏、补丁、注册机和注册信息及软件的解密分析文章(简称“资源”)仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果由用户自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
2、本站所有内容均来自网络,我们尽量分享来自官方的软件资源,部分破解资源在安装过程中会被防毒软件误报有问题,请自行斟酌使用。
3、遇到任何问题请发送邮件至:jasonb0219@gmail.com 与我们联系处理。
推荐下载
-
Jetbrains IntelliJ IDEA v.2024.3.1.1
流行的Java开发工具IDE -
Parallels Desktop v.20.1.3 (55743)
最佳Mac虚拟机解决方案 -
Google Chrome 浏览器 v.131.0.6778.205
谷歌浏览器官方稳定版 -
Google Chrome 浏览器 v.131.0.6778.205
谷歌浏览器官方稳定版 -
Capture One 23 Pro v.16.5.3.1
专业的RAW文件转换器和图像编辑软件 -
Disk Drill v.5.7.1704
数据恢复工具 -
Navicat Premium v.17.1.11
强大的数据库管理工具 -
Sketch v.101.5
轻量易用的矢量设计工具 -
Apple Final Cut Pro v.11.0.0
苹果专属视频编辑解决方案 -
CPU-Z v.2.12
CPU检测软件 -
微信电脑版 v.3.9.12
极致简洁, 迅捷沟通 -
微信 v.3.8.8
极致简洁, 迅捷沟通 -
foobar2000 v.2.24
免费软件音频播放器 -
Adobe After Effects 2024 v.24.6.2
视频合成及特效制作软件 -
Adobe Photoshop 2024 v.25.12
最好的图片设计软件