软件|为什么 electron 不做成独立的 runtime?


软件|为什么 electron 不做成独立的 runtime?

文章图片


软件|为什么 electron 不做成独立的 runtime?

首先我们要为Runtime使用者提供一个专有的打包工具 , 我们就叫它:打包工具 。 这个打包工具还内置了几个可执行程序 , 我们给他们起个名字 , 分别叫:

  1. 最终安装程序
  2. 最终执行程序
  3. 【软件|为什么 electron 不做成独立的 runtime?】最终卸载程序
因为electron是可定制的 , 每个项目都可以根据自身需求做出微调 , 最终就产生了不同修改的运行时 , 而你看锁定在系统里不可定制的webview2(基于msedge) , 就可以很方便地不带runtime分发 。

打包工具的职责:
1、按Runtime使用者的要求修改最终执行程序的图标、应用签名、版本、版权、文件名等资源信息 。
2、按Runtime使用者的要求修改最终卸载程序的图标、应用签名、版本、版权、文件名等资源信息 。
3、把最终执行程序、最终卸载程序与Runtime使用者开发好的HTML/CSS/JS等静态文件放到一起 , 压缩成一个压缩包 , 我们叫他:资源文件
4、把这个资源文件以资源的形式封装到最终安装程序中;按Runtime使用者的要求修改这个最终安装程序的图标、应用签名、版本、版权、文件名等资源信息 。

很多linux发行版就是把electron打包成独立的runtime啊 。 但是electron的迭代太快了 , 导致比如vscode从来都落后官方1到2个大版本号 , 所以就算是独立打包你还是会得到electron全家桶 。 而且electron小版本很多 , 独立打包要解决小版本共存问题 。 而且vscode的非oss版本也只能把electron打包进去 。
简单来说就是 , 就是时代变了 , 软件分发策略也变了 。 macOS和linux就是两种策略的典型代表 。 Linux提倡模块化共享 , 每个软件都显式声明依赖关系 , 再配上包管理机制 , 基本上可以做到缺什么库就自动下载什么库 。 这样的好处就在于如果多个软件依赖同一个版本的库 , 那么系统就只安装一份这样的库 , 从而避免了不必要的空间消耗 。

macOS及同类风格的iOS提倡“整体打包” , 每个软件及其依赖的第三方库全部放在一个Bundle里 , 所谓的app本质上就是Bundle文件夹 。 这样做的优点就在于安装简单 , 直接复制即可 , 系统整体上没有什么耦合性 , 反正app各管各的 。 缺点是软件体积大 , 文件重复率高 。
Windows下两种策略都有 , 但由于没有统一的包管理机制 , 多数情况下还是得需要用户提前安装相关的依赖 。 有的软件做了比较完善的安装程序 , 则由安装程序负责维护相关依赖 。
整体上看 , 随着生产成本降低 , 存储空间变大 , 读写和传输效率提高 , 相比于上个世纪 , 人们越来越不在意空间浪费的问题 , 更愿意拿空间换时间 , 近些年的技术发展无不在证明这一趋势 。 因此 , 整体打包的分发策略可能终将占领上风 。