写点什么

Slack 桌面 3.0 迁移到 BrowserView

  • 2017-11-23
  • 本文字数:1015 字

    阅读完需:约 3 分钟

Slack 最近在 beta 通道中提供了 3.0 版本,该版本包含大量的性能提升和漏洞修复。大多数主要变更都是围绕从 Electron 组件 WebView 到 BrowserView 的迁移,BrowserView 是一个更新且更稳定的替代选择。Slack 工程师 Charlie Hess 发表了一篇博客,概述了这次迁移过程

Slack 使用 Electron 开发,Electron 是一种框架,它使用像 NodeJS Chromium 这样的网络技术来开发桌面应用程序。虽然这种技术有助于 Slack 保持跨平台性,但 Slack 并未像团队所希望的那样稳定。Hess 解释说,这主要是由于 WebView,一个用于渲染网页的 Electron 特性。

WebView 的主要问题之一是组件本身直接在 Chromium 中实现。这意味着 bug 修复最终要由 Chrome 团队完成,这会大大妨碍进度。为了解决这个问题,Electron 团队引入了 BrowserView,它是一个更像 Chrome 选项卡的组件,并且是操作系统窗口层次结构的一部分。团队正在迁移,这是 Slack 3.0 中的大部分工作:

我们的意思是,与 WebView 不同的是,你不能将 BrowserView 拖放到 DOM 中,并使用 CSS 操作它。与顶级窗口类似,这些视图只能从后台 Node 进程创建。因为我们的应用程序是作为一组 React 组件来编写的,该组件包装了 WebView,这些组件位于 DOM 内,所以这看起来像一次完全重写。

然而,Hess 解释说,通过做出良好的技术选择和设计决策,重写是极其轻松的,并且他估计,最终他们能够保留超过 70% 的原始代码。

该团队决定引入使用了 Redux redux-electron 。本质上,Slack 由许多进程组成,每个进程都包含自己的 Redux 存储。redux-electron 使用 Electrons IPC(进程间通信)来共享进程之间的动作,该进程使用主进程作为单一数据源 (SSoT),并将其它进程作为代理。

另一个选择是 TypeScript ,Hess 说它给这个项目带来了很多好处。在重构过程中,类型检查帮助我们避免了许多可能检测不到的错误:

你永远不用再考虑 flatMap 的输出(比如获得的是数组还是单个项)、reduce 的参数顺序、或一个看起来像 throttle 但以 D(debounce) 作为开头的运算符名称。在 VS Code 中使用自动补全功能时,编写 JavaScript 感觉就像在编写 C#。

最后,Hess 解释说,Slack 使用 redux-observable 和基于 RxJS 5 的中间件。Slack 本质上通过一个原语(一个接收和生成动作流的函数)将反应式编程引入 Redux。

在线阅读完整的博客,其中用代码示例做了更详细的介绍。此外,最新版本的Slack 可以在 beta 下载。

查看英文原文 Slack Desktop Migrated to BrowserView for 3.0

2017-11-23 17:502758

评论

发布
暂无评论
发现更多内容

ONES 对话敏捷专家王明兰|系统化敏捷转型,企业应该这样做

万事ONES

研发管理 解决方案 ONES 敏捷转型

坚持正确的研发项目管理转型之路

万事ONES

项目管理 DevOps 敏捷开发 ONES

基于深度学习的短文本相似度学习与行业测评

OPPO小布助手

深度学习 AI 短文本

面试官:数据库自增 ID 用完了会咋样?

一个优秀的废人

Java MySQL 数据库

11张图解单点登录系统,瑞斯拜特!

北游学Java

Java 单点登录

低代码行业未来如何?

优秀

低代码

企业如何选择合适的敏捷项目管理工具?

万事ONES

团队协作 研发体系 研发管理工具 ONES

号称下一代消息中间件!来看看它有多牛逼

白亦杨

Java

一个100%省力的,让城市管廊运维变得轻松的秘诀

一只数据鲸鱼

数据可视化 智慧城市 智慧管理 地下管廊

Canny 边缘提取相关知识学习,图像处理第 32 篇博客

梦想橡皮擦

7月日更

帮你理清学习一个知识点的过程

加百利

大前端 7月日更 primise

剖析供应链攻击的防范

华为云开发者联盟

网络安全 安全 加密 供应链攻击 勒索软件

模拟定位原理

BUG侦探

定位

最新出炉!这份资料可帮你解决95%的问题

欢喜学安卓

android 程序员 面试 移动开发

IPFS挖矿靠谱吗?IPFS是什么项目是国家许可的吗?

走进Android架构!2021大厂Android面试经验

欢喜学安卓

android 程序员 面试 移动开发

如何像百度直播一样优化用户体验(起播篇)

百度Geek说

大前端 直播 起播优化

你一定要知道的敏捷规划工具—影响地图

华为云开发者联盟

敏捷开发 软件开发 开发 影响地图 规划工具

什么是敏捷开发?敏捷开发的流程有哪些?

万事ONES

敏捷 敏捷开发 Agile ONES

汇总十家互联网大厂面试题后,产出Java架构师1575道“完美圣经”

Java架构追梦

Java 阿里巴巴 架构 面试

最新整理:360°深入了解Flutter

欢喜学安卓

android 程序员 面试 移动开发

模块8作业

方堃

云洲智造直播间来啦!精彩不停,速来观看

视频云的全景蓝图,想象力的允诺之地

阿里云CloudImagine

阿里云 计算机视觉 云视频 超视频化 图像增强

BTA挖矿软件平台系统开发

获客I3O6O643Z97

挖矿矿池系统开发案例 BTA 挖矿挣钱是什么原理

流动性质押挖矿系统开发DAPP

获客I3O6O643Z97

DAPP智能合约交易系统开发 DeFi流动性挖矿 质押挖矿

学编程要考证么?我考了 6 个!

程序员鱼皮

Java c++ Python 数据结构 算法

金九银十吃透这份redis笔记文档,让你超过90%的面试者

Java redis 架构 面试

最新美团点评Android团队面试题:你了解过移动端适配吗

欢喜学安卓

android 程序员 面试 移动开发

最新出炉!最新阿里+头条+腾讯大厂Android笔试真题

欢喜学安卓

android 程序员 面试 移动开发

社区活动|Apache Pulsar 社区志愿者招募

Apache Pulsar

大数据 云原生 pulsar Apache Pulsar 消息中间件

Slack桌面3.0迁移到BrowserView_HTML5_Andrew Morgan_InfoQ精选文章