写点什么

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

评论

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

Vue基础知识和案例展示

Geek_7ubdnf

Vue

软件测试/测试开发 | Jenkins 多任务关联

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

BoCloud博云

博云

EfficientFormer 提升速度的同时保持性能,使 ViT 在移动端成为可能

Zilliz

深入思考 Schema 管理的几个基本问题

观远数据

华为云数据库,安全、专业,值得信赖

与时俱进的时代

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

万字技术干货 |YMatrix 高性能时序数据库引擎的技术实践

YMatrix 超融合数据库

性能优化 Clickhouse 时序数据 超融合数据库 YMatrix

一文读懂Go Http Server原理

捉虫大师

Go HTTP 1月月更

使用 WebP 图像加速WEB加载

devpoint

Web 前端开发 网站优化 WebP

ScrollView(滚动条)

芯动大师

android ScrollView(滚动条) 滚动效果

企业如何轻松上云?华为云弹性云服务器ECS给出答案

IT科技苏辞

华为云ECS,专为您打造安全、灵活、高效的应用环境

与时俱进的时代

闲话 dubbogo 社区

阿里巴巴中间件

阿里云 云原生 dubbo

今年大促季,阿里云容器服务有哪些技术和应用新突破?

阿里巴巴中间件

阿里云 容器 云原生

拿下中国信通院多项测评的华为云数据库,究竟有多牛?

与时俱进的时代

华为云大数据解决方案赋能金融行业发展,打造5G智慧银行营业厅

IT科技苏辞

扩展接口SmartInstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

接口

华为云云原生数据库,激发数据活力

与时俱进的时代

华为云数据库GaussDB(for Redis),如何为人们日常生活保驾护航

科技怪授

数据库

还在高投入自建物联网平台?教你如何节省三分之二成本——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

EMQX在Kubernetes中如何进行优雅升级

EMQ映云科技

运维 物联网 IoT 节点 企业号 1 月 PK 榜

华为云大数据赋能北港集团发展创新,数字化转型成效显著!

IT科技苏辞

华为云CDN引领网站性能优化,助力企业更好发展

科技怪授

CDN

华为云数字化解决方案激活企业市场空间,为企业稳健发展再加码!

IT科技苏辞

嗨 Jina,帮我画一幅高山流水图

Jina AI

图像生成 Diffusion

教你3步完成阿里云物联网平台公共实例到企业实例的迁移——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

Frp流量隐匿对抗排查

领创集团Advance Intelligence Group

内网渗透 Frp 流量编排

企业优秀网络环境,为何离不开华为云CDN全站加速服务?

科技怪授

CDN

dcm4che 依赖下载异常

JefferLiu

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

洛神灬殇

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

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