1. 首页
  2. css

CSS\”脱离主线\”

JavaScript就是他们所说的\”单线程\”。正如Brian Barbour所说:

这意味着它有一个调用堆栈和一个内存堆。

我们都经常感觉到这种症状,表现为性能问题和元素或整个站点上的非交互性。如果我们给JavaScript大量的工作,而它真的很忙,那么它就不会做其他事情,比如说,快速处理我们的事件处理程序。

最近出现了一个有趣的点/反点组合。

Das Surma一直主张尽可能多地将JavaScript从主线程中移除。事实上,当谈到使用webworkers时,他建议:

您应该始终使用webworkers。

webworkers是在主线程之外运行JavaScript的主要方式。保罗·刘易斯把这个问题比作早上9点的高峰时间:一天中最糟糕的旅行时间。对于许多人来说,他们不可能在一天中的任何其他时间旅行,因为他们需要在上午9点之前到达工作地点。

这正是今天许多web代码的样子:所有东西都在一个线程上运行,即主线程,而且流量很差。事实上,它甚至比这更极端:从市中心到郊区只有一条车道,而且几乎每个人都在路上,即使他们不需要在早上9点到办公室。

我也喜欢Surma比较其他语言的\”主线程\”和\”UI线程\”。如果你所做的是与UI相关的,在主线程上做;如果不是,在主线程下做。他在网络平台Podcast的一个好插曲《194:脱离主线》中谈到了这一点。我可以看出,这是JavaScript开发人员态度和思维的积极变化。

一个脱离UI线程的例子:状态管理。

David Gilbertson一定读过这篇文章并写道:

我最近看到一篇文章认为更新Redux商店对于Web工作者来说是一个很好的选择,因为它不是UI工作(而且非UI工作不属于主线程)。把数据处理交给一个工作线程听起来很明智,但是这个想法让我觉得有点学术性。

在我看来,David的主要观点是,我们需要做的一些繁重的JavaScript操作是为了响应用户发起的操作,用户无论如何都需要等待事情完成,所以在这段时间内没有响应的UI是可以的。但对于任何不是由用户发起的、耗时超过100毫秒的事情,他同意网络工作者是有帮助的,值得注意的是,Surma提出的一个重要观点是,世界上到处都是低端手机——谁知道高端手机上的100ms被翻译成低端手机上的100ms是什么。)

在JavaScript中,让东西脱离主线程的一大诀窍是使用Web Workers。这不是黑客攻击或其他什么,Web工作者实际上是将多个后台线程引入JavaScript的本地API。与服务工作者类似,它们通常位于另一个文件中:

var>

,但它们不一定非得是–您可以内联它们或使用lib。API并不可怕,但也不惊人。Surma有一个图书馆:Comlink。

苏尔玛在这方面的讨伐是相当长期的努力。这是2018年Chrome峰会上的一个特色,目的是保证响应能力:在主线程上下安排时间,在2019年再安排主线程的时间是工作过度和报酬过低的,但这次更新时的浏览量几乎是6倍:他并不是一个人。下面是alexmacarthur关于调整他对事件处理程序的思考,以适应离线操作

CSS\”脱离主线\” 为WP2原创文章,链接:https://www.wp2.cn/css/css%e8%84%b1%e7%a6%bb%e4%b8%bb%e7%ba%bf/

发表评论

您的电子邮箱地址不会被公开。