写点什么

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

评论

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

Agentic Data时代:让数据主动思考,驱动业务增长

火山引擎开发者社区

火山引擎

医用布草管理RFID解决方案

斯科信息

RFID解决方案 医院布草管理 斯科信息

智源研究院26届“智星”科技人才计划正式启动

智源研究院

Disk Graph|扇形图+矩形图双模式,清理磁盘空间超直观

柠檬与橘子

CAD图纸定位双神器:测坐标防偏移,测立面拒返工!

在路上

cad

懒懒笔记 | 课代表带你梳理【RAG课程 19:基于知识图谱的RAG】

商汤万象开发者

AI agent LLM rag

AI 英语口语 App 的核心功能

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语口语

2025 DePIN报告

PowerVerse

一颗荔枝50万,如何做成一个大项目?

禅道项目管理

项目管理 敏捷开发 需求管理 禅道项目管理软件 WBS

Pickle 开源 AI 桌面助手 Glass:捕捉屏幕生成结构化信息;邱锡鹏团队开源对话语音模型 MOSS-TTSD丨日报

声网

MyEMS 在行业中的应用与优势剖析

开源能源管理系统

开源 能源管理

Airweave - 让AI代理搜索任何应用的统一知识平台

qife122

AI代理 搜索技术

借助HarmonyOS SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”

HarmonyOS SDK

HarmonyOS HarmonyOS NEXT HarmonyOS SDK应用服务

4S店看过来:斯科提出基于RFID技术的维修工器具智能化管理解决方案

斯科信息

RFID解决方案 RFID工具库房

实例解析:粮油食品仓储RFID高效管理方案

斯科信息

仓储RFID解决方案

MySQL 多版本并发控制

不在线第一只蜗牛

MySQL

电脑卡顿反应慢的原因及解决方法

阿拉灯神丁

电脑选购 CleanMyMac 电脑运行缓慢 Mac电脑使用教程 mac电脑维护工具

黑龙江等保测评注意事项

等保测评

自然语言转SQL再突破!腾讯云TCDataAgent斩获国际榜单全球第三、国内第一

极客天地

容器技术与AI双向赋能:应用开发范式的效能跃迁与架构重构

xuyinyin

小程序热更新:驱动App无感迭代的“空中引擎”技术范式

xuyinyin

TypeScript结构化类型初探

电子尖叫食人鱼

typescript

低代码这么火,为什么搞砸的这么多?

秃头小帅oi

火山引擎Data Agent全面上线!以企业级数据智能体,重构数据应用范式

火山引擎开发者社区

火山引擎

CAD编号如何自动递增?两种神技,效率拉满!

在路上

cad cad看图 CAD看图王

引迈信息6周年:数智领航,共赴新程

引迈信息

从被动救火到主动预测!碧桂园服务以图谱技术重塑IT运维底座

智在碧得

PDF Protector for Mac(PDF加密与解密工具)

Geek贝

MacX Video Converter Pro视频处理软件

Geek贝

Iridient Developer for mac RAW 图像处理与转换软件

Geek贝

Mac 软件

MyEMS:开启能源管理新时代​

开源能源管理系统

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