Electron源码学习: Electron组成与结构
前言
最近研究学习Electron
的源码结构已经有一些小的进展, 越接触Electron
就越发现组成这个软件的大集合不得了.现在学习到的仍然是这个大集合的冰山一角, 不过还是有必要记录一下.
Electron
的兴盛无疑是建立在了巨人的肩膀之上. 我们都知道Electron
是建立在Node.js上的, 然后Node.js 是建立在V8上的. Node.js社区的是目前最大的开源社区之一, 无疑Electron
的起跑线非常高, 再加上V8的强劲动力,现在程序UI用Electron
除了大了点儿, 其他也就没什么不好的了.(除非一些特殊场景)
笔者的分析测试环境都是Windows环境, 但是这对于分析流程来讲并没有什么影响.
Electron的组成
前面提到Electron
由大集合组成, 那么在这里就有必要大致了解清楚这个集合里面包含的哪些优秀的开源库, 不然Electron
的优秀无从可知.
我大概整理了下这个组成, 理解不深内容有误请指教.
Node.js: 这个跨平台的开源项目带来了强大的扩展能力; 只从源码上讲, Node.js提供了众多的基础库, 例如: 加解密算法, 文件系统, 网络相关, 操作系统相关, 看electron_node源码组成: (注意: electron所使用的的nodejs版本,并不是完全版的, 在该特制版中, 少了很多的特性, 比如算法处, 目前electron_node中就只有`AES, RC4等有限的集算法, 真正Node.js的环境有一大堆的算法)
Libuv: node.js异步事件处理库, 在所有的调用都是异步设定下,让node.js
的调用速度快上了一大截. 其中node.js
的文件系统, 网络相关等功能由该库完成.
V8: node.js
名声很高的一个原因就是因为v8, 因为node.js的高效率的核心本质就是因为v8, v8是Google的Javascript
引擎, 各种特性加持下, JS的执行速度简直快的飞起. 虽然随着版本的更迭,V8的体积也越来越大, 但是其效率缺越来越恐怖.比如Node.js 12引入了一个Code Cache
的技术, 当真是恐怖如斯.
笔者目前学习的两个版本的Electron, 分别是4.2.9 另一个是8.3.0. V4.2.9 并不算老版本, 还是2019年年底的版本, V8.3.0貌似是2020年6月份的版本, 结果在同样的Electron默认启动页面, V8.3.0 的效率比V4. 2.9提升了30%的启动速度. 然而我现在还没有明白发生了什么事情. (希望明白这里的同学告知下, 感谢)
Electron结构
前面的一些介绍, 和源码分析的关系并不大, 这些都是能在网上找到的一些资料. 当然实际测试的确实测试了很多次得出的结论. 那此时此刻肯定大家最关心的还是源码结构的问题. 来看一个图.
待续中…