QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:502509

评论

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

Git 开发规范

玄兴梦影

git

Bartender 5:帮助用户隐藏、组织和自定义Mac菜单栏中的图标和通知

Rose

犀牛8 mac版 Rhinoceros 8中文直装版下载安装

Rose

汉化版ProPresenter下载 现场分屏演示工具ProPresenter

Rose

全套音频插件包FabFilter Total Bundle 2024 mac下载安装

Rose

视觉特效软件包FxFactory 8 Pro完美破解版 附fxfactory 破解补丁

Rose

接口测试:使用 curl 发送请求

测吧(北京)科技有限公司

测试

LeetCode题解:63. 不同路径 II,动态规划(空间O(n)),JavaScript,详细注释

Lee Chen

Three-Body Technology Raindrop & Blade三体声音科技-落英中国扬琴音源

Rose

2023 年零信任落地关键词:整合、身份、普及

芯盾时代

iam 统一身份认证 零信任

Ample Bass Jazz 低音爵士 mac虚拟音源

Rose

GPT-4o API 实测解析:开发者的福音还是挑战?

蓉蓉

gpt4o

From IPQ5332 to IPQ9554: Interpret the Wi-Fi 7 chip for different positioning

wifi6-yiyi

cpu wifi technology

Media Encoder 2024 for Mac(ME2024)v24.5激活版

Rose

2024下半年小间距LED市场分析

Dylan

综艺节目 场景 城市 LED display LED显示屏

DataWorks Copilot:大模型时代数据开发的新范式

阿里云大数据AI技术

sql 大数据 阿里云 Dataworks

阿里巴巴中国站拍立淘API返回值分析:图像识别技术助力电商市场竞争

技术冰糖葫芦

API Explorer API 测试 API 策略

mac思维导图软件OmniGraffle v7.23中文正式版

Rose

百度&YY设计稿转代码的探索与实践

百度Geek说

前端 figma 企业号 6 月 PK 榜 设计稿转代码

限时优惠| 性能测试进阶训练营重磅来袭

测吧(北京)科技有限公司

测试

INFINI Labs 助力开源与教育:免费许可证计划全面升级

极限实验室

easysearch Pizza 免费许可证

海量数据处理利器 Roaring BitMap 原理介绍

vivo互联网技术

大数据处理 BitMap Roaringbitmap

ShineScrum捷行公开课

ShineScrum

淘宝商品详情API接口:轻松管理商品信息,提升运营效率

技术冰糖葫芦

API Explorer API 测试 API 策略 pinduoduo API

探索强化学习(人工智能重要子领域):原理、算法及应用

天津汇柏科技有限公司

人工智能 机器学习 强化学习

上新:NFTScan 正式上线 Bitcoin-brc20 浏览器!

NFT Research

NFT\ NFTScan API】

技术解读数据库如何实现“多租户”?

华为云开发者联盟

数据库 sql 华为云 华为云开发者联盟 企业号2024年6月PK榜

Royal TSX v6.1激活版 macOS强大的远程管理软件

Rose

从面试无力感,到一天2个offer的经验分享(内附大厂面试题)

测试人

面试 软件测试

测试人生 | 招聘严峻期从面试无力感,到一天2个offer的一些经验分享(内附美团、字节、快手等面试题)

测吧(北京)科技有限公司

测试

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