极客视点
极客时间编辑部
极客时间编辑部
113230 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/02:15
登录|注册

Slack桌面3.0迁移到BrowserView

讲述:杜力大小:1.03M时长:02:15
近日,Slack 在 Beta 通道中提供了 3.0 版本,该版本包含大量的性能提升和漏洞修复。不过,大多数主要变更都是围绕从 Electron 组件 WebView 到 BrowserView 的迁移。Slack 工程师查理·赫斯(Charlie Hess)发表博文概述了这次迁移过程。
Slack 使用 Electron 开发,Electron 是一种框架,它使用像 NodeJS 和 Chromium 这样的网络技术来开发桌面应用程序。虽然这种技术有助于 Slack 保持跨平台性,但 Slack 并未像团队所希望的那样稳定。查理解释说,这主要是由于 WebView,一个用于渲染网页的 Electron 特性。
WebView 的主要问题之一是组件本身直接在 Chromium 中实现,这意味着 bug 修复最终要由 Chrome 团队完成,会大大妨碍进度。
为了解决这个问题,Electron 团队引入了 BrowserView,它是一个更像 Chrome 选项卡的组件,是操作系统窗口层次结构的一部分。
查理表示,团队正在迁移,这是 Slack 3.0 中的大部分工作。不过,与 WebView 不同的是,开发者不能将 BrowserView 拖放到 DOM 中,并使用 CSS 操作它。与顶级窗口类似,这些视图只能从后台 Node 进程创建。
因此,由于 Slack 的应用程序是作为一组 React 组件来编写的,该组件包装了 WebView,而这些组件位于 DOM 内,所以这看起来像是一次完全重写。
不过,查理透露,通过做出良好的技术选择和设计决策,重写是极其轻松的,并且他估计,最终他们能够保留超过 70% 的原始代码。
另外,该团队决定引入使用了 Redux 的 redux-electron。本质上,Slack 由许多进程组成,每个进程都包含自己的 Redux 存储。Redux-electron 使用 Electrons IPC(进程间通信)来共享进程之间的动作,该进程使用主进程作为单一数据源 (SSoT),并将其它进程作为代理。
另一个选择是 TypeScript,查理说它给这个项目带来了很多好处。在重构过程中,类型检查帮助他们避免了许多可能检测不到的错误。
他在文中写道:“你永远不用再考虑 flatMap 的输出(比如获得的是数组还是单个项)、reduce 的参数顺序、或一个看起来像 throttle 但以 D(debounce) 作为开头的运算符名称。在 VS Code 中使用自动补全功能时,编写 JavaScript 感觉就像在编写 C#。”
在线阅读完整的博客,其中用代码示例做了更详细的介绍。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
4
沉浸
阅读
分享
手机端
快捷键
回顶部