博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Slack桌面3.0迁移到BrowserView
阅读量:5860 次
发布时间:2019-06-19

本文共 1117 字,大约阅读时间需要 3 分钟。

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

\\

Slack使用Electron开发,Electron是一种框架,它使用像和这样的网络技术来开发桌面应用程序。虽然这种技术有助于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%的原始代码。

\\

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

\\

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

\\
\

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

\
\\

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

\\

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

\\

查看英文原文

\\

转载地址:http://vygjx.baihongyu.com/

你可能感兴趣的文章
Team Name
查看>>
UVA-10212 The Last Non-zero Digit. 分解质因子+容斥定理
查看>>
RedHat6 管理应用服务【11】
查看>>
Ember.js 3.9.0-beta.3 发布,JavaScript Web 应用开发框架
查看>>
python标准库00 学习准备
查看>>
4.2. PHP crypt()
查看>>
Python递归函数与匿名函数
查看>>
loadrunner安装运行一步一步来(多图)
查看>>
监控工具htop的安装及使用
查看>>
Spring 任务调度 简单的,使用Schedule
查看>>
进老男孩的自我介绍和决心书
查看>>
Android一些问题的解决方案
查看>>
目标与绩效管理实战专家胡立
查看>>
2014手机分析图
查看>>
一元多项式相加
查看>>
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)
查看>>
HDOJ 1003:求一串数字中和最大的连续子串
查看>>
RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
查看>>
转两好文防丢:Debian 版本升级/降级 & Linux 应用程序失去输入焦点问题的解决...
查看>>