IT之家 12 月 8 日消息,IT之家此前报道过《QQ 项目组:基于 Electron 技术 的 Windows 内测版本预计将于明年推出》,现在腾讯客户端工程师(知乎 ID:MagiLu)对大家比较关注的一些问题进行了解答。
以下为回答原文:
(资料图片)
基于 Electron 技术的 Windows 版 QQ 内测版本预计 2023 年推出,该版本有哪些新功能?
感谢大家对新版桌面 QQ NT 的使用和关注,今年 QQ 团队启动了 QQ 的架构升级计划,第一站就是解决目前桌面端迭代慢的问题,我们使用新架构从前到后对 QQ 代码进行了重构,而其中选择使用 Electron 作为新版 QQ 桌面端 UI 跨平台解决方案,是基于提升研发效率、框架成熟度、团队技术及人才积累等几个方面综合考虑的结果。
1. 新版 QQ 使用跨平台方案的背景
由于历史原因,QQ 最先有 Windows 版本,然后有了 Mac 和 Linux 版本,三端最早都是独立的团队和独立的代码实现,Windows 功能最丰富全面,Mac 主打创新体验,功能相对较少,Linux 最简陋,随着移动互联网的洗礼,各种组织架构调整、人才流动和业务兴替,当前的桌面端 QQ 处于一个比较臃肿、难以维护、缺少更新迭代的状态。
随着远程办公和远程教育的普及,桌面端又开始回到大家的视野,有旺盛的需求,但要同时维护 QQ 的 Windows / Mac / Linux 三个桌面端,并确保每个端都保持快速、高质量的迭代,显然是一件高成本、高投入、难度大的事。在这样的背景下,要把 QQ 桌面端重新打磨好,我们就需要尽可能多的复用代码,实现一套代码、多端运行、体验统一,提升研发效率,持续提升客户端性能和用户的产品体验,同时满足 Windows / Mac / Linux 三大桌面平台用户的需求。于是,跨平台的复用方案就变成了我们自然而然的选择。
2.跨平台方案的选择
首先,我们希望最后选择的跨平台方案应该是成熟足够、低开发和使用成本的,不需要为了使用框架本身,还需要投入额外巨大的人力成本。这个其实在 React Native、Flutter、Tauri 等跨平台框架的使用过程中,我们都遇到过类似的问题,除了功能开发,为了把框架生态、周边、工具链建设好,还需要投入巨大的额外成本,Qt 也有类似的问题。而使用 Electron,对于 Web 前端开发同学,基本上是 0 成本,现有的 Web 前端的大部分基建都可以直接复用,而且使用 Web 开发 UI 的效率,在主流技术栈里算是很高的了。并且这几年主流的桌面端应用基本都选择了 Electron,如 VScode、Discord、Slack、Skype、Whatsapp、Figma 等等(https://www.electronjs.org/apps),新的桌面应用基本上也是首选 Electron,另外,Electron 版本的迭代速度和社区氛围都很在线。
其次,技术选型是否适合当前团队也是一个考虑点,团队是否有相关的技术积累,是否有人才储备来持续投入这个技术栈也非常重要。Qt 的确在性能上是一个很好的选择,但目前团队对 Qt 没有太多积累,基建基本没有,而且市场上相关人才其实比较匮乏,招聘就更难了,而当前 QQ 团队 Web 前端团队积累是比较充分的,可以比较好的权衡质量、性能和效率。
最后,Electron 只是目前新版 QQ 桌面 UI 跨平台的部分,在总体项目中占比较小,并不是 WebQQ 或者网页版 QQ 或者内嵌浏览器,新版 QQ 其实基于 NT 架构进行了完整的重构和重写,基本构思如下图,可以看到核心的 QQ 逻辑还是运行在 C++ 这一层。
3.Electron 应用的内存占用
至于大家关心的 Electron 应用的内存问题,并非不能被优化和解决。由于一般 Web 应用的短周期使用路径,往往不太关注内存使用。而使用 QQ 中群聊和图文消息比较多情况,也会给内存带来不小的考验。但是当我们沉下心来,充分细致地针对每种场景进行分析,再结合定制深度优化 Electron 和与 Native 通信层面的优化,内存可以被很好控制,剩下的不过是再把一些内存泄漏的场景找出来而已。目前阶段,我们基本上一到两周就会出一个新版本,比如今天灰度的 Mac 版本,在内存占用方面就做了非常大的优化,有兴趣的同学可以使用最新版本,可以长时间运行跟老版本做个对比,已经得到明显的优化,而且优化还在持续中,敬请期待。
4.用户体验和反馈
新的 Mac 版 QQ 上线以来,其实我们一边不断迭代新功能,一边持续性能优化,过程中也收到很多不错的内测反馈和好评,也给了我们不少信心去选择并坚持这个技术路线。
最后,新版 LinuxQQ 已经在内测中,很快将和大家见面。能够快速推出功能齐全的 Linux 版 QQ,也是得益于所选方案给带来的迭代效率明显提升。