这是我给 Electron 开的减肥药,你觉得行么?

2018-02-16 07:27:47 +08:00
 gowl

Electron App 的大小一般在 100MB+,压缩后一般在 50MB+。我们假设这个体积比较大,受不了;另外假设我们想用 HTML + CSS 的方式来构建跨平台 UI,而不是使用 Native 的解决方案,并且。那么为了给这种 App 瘦身,可不可以这么做:

一个 Apache 服务器差不多 2MB 左右。打包一个处理动态请求的服务模块假设十几 MB 大小。这样我们可以做一个可以分发到客户端的 web 服务。并且这个东西的大小在 20 MB 左右,这是可以接受的。然后用户通过 http://localhost:1234/app 这样的地址通过本地浏览器来访问。

这样做完其实就跟 Electron 没什么关系了,不过还是拿他来做比较。另外假设我们想要的是能用 HTML 做 UI,而不一定要用 JS 来完成整个 app。

我能想到的缺点是用户浏览器里的 localhost:mnxy 比较难看。大家有什么解决办法么?

15731 次点击
所在节点    问与答
62 条回复
gowl
2018-02-16 11:36:15 +08:00
@tabris17 有什么误解?
dtysky
2018-02-16 12:21:26 +08:00
electron 还解决了和一些浏览器做不到的系统调用问题。。。你真的有所误解
omph
2018-02-16 12:30:37 +08:00
至少解决了桌面集成问题。
不过安装多个 electron app 时,倒可以考虑共用一个 chrome 内核,这样安装空间可以少些。
至于运行占用,除非搞个精简版 chrome,不要的特性通通去掉,多进程架构也可以改。
awing
2018-02-16 12:40:40 +08:00
electron 的核心价值这就被你抹杀了。。。。
murmur
2018-02-16 12:43:29 +08:00
@plqws 迅雷不是用的 lua 做的界面么
applehater
2018-02-16 13:29:09 +08:00
UWP 支持用 HTML JavaScript 打包后也很小,因为系统统一提供了运行环境。
fcten
2018-02-16 13:51:44 +08:00
早就有软件这么做了,不提供 native ui,只有 web 管理界面。事实上内嵌一个 http 服务只需要几十 K 的库就够了。
electron 就是为了解决这种需求才出现的,它帮你解决了很多通用性的问题。
就好比人为了代步发明了汽车,你现在说汽车费油笨重不环保,我们还是骑自行车吧……
lxml
2018-02-16 14:40:24 +08:00
100MB 相比解决的问题,真的不算什么,就像静态编译和动态编译,在 2018 年我觉得无需争论
plqws
2018-02-16 15:11:29 +08:00
@murmur “ Web 迅雷”,迅雷的早期产品
murmur
2018-02-16 15:20:45 +08:00
@my101du 如果一个软件牛逼到一定程度或者垄断到一个程度 再垃圾也有人去用

优化是有的 QQ 当时就花了大力气内嵌了 chrome 你看别的 chrome 都是一个文件几十 m 的运行库 qq 音乐的 dll 都是几 mb 几 mb 一大堆
murmur
2018-02-16 15:23:16 +08:00
更正是一下 是网易云音乐
QQ 音乐现在好像内嵌了一个 QQ 浏览器
ysc3839
2018-02-16 18:35:30 +08:00
这么做主要是为了解决兼容性问题。
Windows 平台在 Win10 之前都只有 IE,而且 IE 已经不再更新。这样的话就不能使用新的 HTML 特性。Win10 有 Edge,但是调用起来还是有点小坑的。
Linux 平台系统没有提供 Web 内核,估计只有使用 CEF 这类嵌入式内核,不可避免要带上一整个内核。
macOS 可能是最简单的,系统自带了较新的内核。至于有没有什么坑我没用过就不知道了。
g00001
2018-02-16 18:38:01 +08:00
这些东西也还是要看软件开发者各自的需求,区分需求具体对待,有一些软件的确是不怕大,越大越好卖钱,但也不是说你写个软件觉得越大越好,所有人都一定也得是相同的想法,对于大多数共享软件,几 MB 还有很多人嫌大了,如果动不动就几百个 MB 起步,估计大多数共享软件下载站都得关门了。有很多用户一看你的软件上百 MB,扭头就走了,毕竟不是每个软件开发者都是腾迅、网易,要用户忍受你的体积,你先得有他那么大的底气呀。

而且软件的体积大,占用的资源一般也会大,例如 chrome,多开几个网页,8G,10G 的内存就没有了,一个网页就得启动一个 chrome 进程,不要以为开发者自己配的内存大,小白用户个个内存都很大。而且别人愿意 chrome 耗很大的内存,不见得对每个共享软件都有这种耐心,要是桌面上开几十个进程,个个都想占个 8G,10G 的耗光用户的内存,那就笑话了。

如果希望开发的桌面软件体积小一点的,可以试试 aardio,aardio 一个主要特色就是体积小,开发工具带全部标准库也就 5.6MB ,虽然体积小功能可并不少,接口丰富,而且还可以嵌入调用 Java,C#,Python...这一大堆的第三方语言,非常方便。

用 aardio 嵌入浏览器也很方便,可以嵌入一个很小的 HTTP 服务端,服务端支持类 PHP 的模板语法(关键还可以直接调用系统 API 这些),支持系统自带的浏览器控件,带精简版的 WebKit 控件 3MB,也支持 chrome 的精简版的 blink 控件,也可以用来嵌入 electron。

发一个 aardio 范例里的 asar ( electron 发布打包格式)文件管理器,类似这种软件用 aardio 要不了几句代码就能写出来。 像这种一些小的软件,几句代码可以搞定的事,几百 KB 可以搞定的事,非要上个几百 MB 的框架,没有必要吧。

开着豪车非要去骑自行车,这的确是不对。
但是要知道,满大街更多的是自行车,你溜个菜市场,还不愿意骑自行车,非要把房车挤到菜市场里去买菜,理由竟然是越大就一定越方便,越高级,这就不合理了。
ysc3839
2018-02-16 18:59:49 +08:00
@omph 共用的话问题就更复杂了,不同软件使用的版本不同怎么办?我想使用新版本的,而有的软件用旧版本的不升级。
还有安装卸载的问题,第一个软件装上了这个共用的内核,那卸载时删不删?删掉的话如果别的软件也依赖呢?不删的话不是浪费空间?
Osk
2018-02-16 19:37:47 +08:00
emm,以前买 Crucial SSD 的管理软件就是这样搞的,安装包很大(相对其它家),调用浏览器访问 loclhost:???,体验相当糟糕,IE 有兼容性问题,Chrome 倒能用吧,如果不是性价比还行,就冲这软件就得给差评。似乎 server 端是 java 搞的,最后还告诉我没检测到 SSD。。。不知道现在改进没
tsl0922
2018-02-16 21:14:53 +08:00
这里有个现成的轮子: https://github.com/zserge/webview,劣势就是没法利用 nodejs 的各种库了,但是也可以 js 和 c/go 交互。
omph
2018-02-16 22:03:56 +08:00
@ysc3839
浏览器内核可以独立安装,如果 app 不兼容当前内核,可以装自己打包的,总之给用户选择权。
删不删属于软件依赖问题,由包管理系统解决。
gowl
2018-02-16 23:13:17 +08:00
@g00001 aardio 跨平台么?
ysc3839
2018-02-18 09:44:15 +08:00
@omph Windows 没有包管理。
ysc3839
2018-02-18 09:56:34 +08:00
@gowl 看了一下,似乎是 Windows only,不开源,感觉是个人维护的项目。我认为用在实际项目中不太现实,只适合个人使用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/430904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX