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

\\

Slack桌面3.0迁移到BrowserView相关推荐

  1. html应用json 文件_安全研究 | Slack桌面应用程序的RCE漏洞+XSS漏洞

    对于Slack的桌面应用程序来说,一些应用内跳转.XSS.逻辑重定向和HTML或javascript注入bug,都有可能导致任意代码执行.这篇Writeup就讲述了作者通过构造HTML注入,绕过Sla ...

  2. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  3. 微软桌面5.0新增时间线功能

    2019独角兽企业重金招聘Python工程师标准>>> 晨,微软召开发布会,正式更新Surface Pro 6 .Surface Laptop 2 以及 Surface Studio ...

  4. .NET Core 2.0迁移技巧之MemoryCache问题修复

    对于传统的.NET Framework项目而言,System.Runtime.Caching命名空间是常用的工具了,其中MemoryCache类则常被用于实现内存缓存. .NET Core 2.0暂时 ...

  5. MDT2012部署问题,USMT5.0 迁移哪些内容

    如题,USMT5.0迁移哪些内容,请见链接 http://msdn.microsoft.com/zh-cn/library/hh825238.aspx USTM4.0 迁移哪些内容,请见链接 http ...

  6. 这些严重的 Slack桌面劫持漏洞仅值区区1750美元?

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 安全研究员Oskars Vegeris负责任地向 Slack 披露了多个漏洞,它们可导致攻击者劫持用户计算机,但研究员仅获得1750美 ...

  7. 红旗桌面4.0正式版最新使用方法和问题解答100例

    原作:dsj兄 来源URL: http://www.linuxsir.com/bbs/showthr...?threadid=53275 以下为原文(发表自linuxsir.com): 大部分转自红旗 ...

  8. Facebook MySQL 8.0 迁移之路

    MySQL,一款由 Oracle 公司开发的开源数据库,Facebook 一些最关键的工作负载均有赖于它来提供动力.为了支持不断发展的业务需求,我们积极地开发了一些 MySQL 的新特性.这些功能改变 ...

  9. 爱e聚合桌面 v1.0.2008.0530 免费下载

    Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...

最新文章

  1. Genome Biology:人体各部位微生物组时间序列分析Moving Pictures
  2. java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
  3. RxLifecycle详细解析
  4. [JavaWeb-MySQL]MySQL服务启动和关闭
  5. Android 数据存储之SharedPreferences存储小记
  6. 手机浏览器网址_苹果手机怎么登两个微信
  7. 如何清理和删除 Docker 镜像
  8. 【读书笔记】统计学:从数据到结论 第七章
  9. 服务器虚拟机迁移的6个步骤,vmware 虚拟机迁移
  10. html给图片加个放大效果鼠标经过,网页制作-如何在制作鼠标经过时图片放大效果...
  11. CSDN图片加载不出来,edge浏览器能够解决
  12. ubuntu邮件客户端_在Ubuntu中将Gmail设置为默认邮件客户端
  13. 转行AI产品经理的学习过程
  14. linux网络测速qerf,kehu.one在线网速测试,网站测速工具,测网速,网站访问速度测试-boce.com...
  15. 【教程】Ubuntu20.04 + VirtualBox 各种软件环境安装
  16. HAN - Heterogeneous Graph Attention Network 异构图注意力网络 WWW 2019
  17. 关于Android开发的面试经验总结,妈妈再也不用担心我找工作了!
  18. #五、江恩的共振点是什么?
  19. 浙大计算机学院博士毕业论文要求,浙大在读博士需要3篇SCI 论文才能毕业,清华博士却不作要求!...
  20. 华纳云:数据中心风险评估做法

热门文章

  1. 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现
  2. 使用华为云Linux宝塔面板搭建网站+遇到的报错解决
  3. 【HUE】问题汇总(持续更新)
  4. 双系统 Win10下安装Linux(单/双硬盘)
  5. 李唐:教你怎么做好网站SEO策略
  6. 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
  7. 如何群发邮件,5秒帮你搞定
  8. 玩转华为数据中心交换机系列 | 配置手工负载分担模式链路聚合示例
  9. RMAN 下CROSSCHECK命令 详解
  10. Prometheus 监控详解