Web Workers是我不时反思的一项技术,无论是作为博客文章的主题,还是在演示文稿中提及。
在我参加的最近一次演讲中,发言人谈到网络工作者:
我不确定他们为什么不再使用它们。
我意识到,考虑到这一点,对于具有如此明显优势的技术而言, use cases,网络工作者似乎采用了相当缓慢或狭窄的采用方式。
Web工作者是否存在一些固有的问题,使它们不那么有用?我只是在错误的地方寻找他们使用的例子吗?或者是Javascript程序员一般不习惯于创建多线程应用程序。
答案 0 :(得分:8)
他们使用不多的主要原因(在我看来):
惯性。他们是一种相对较新的技术,人们还没有花时间去学习它们。你去讨论它,这意味着你已经走在了前面;那里有很多人甚至都没有听过“网络工作者”这个词,更不用说编写它们了。
浏览器兼容性。旧版浏览器不支持它们。大多数人仍然需要为他们的网站支持至少IE8,所以不能使用这样的技术。
为什么要这么麻烦?使用新技术的唯一原因是它解决了问题或实现了新的目标。大多数网站对网络工作者没有任何实际需求。或者即使他们这样做,他们也不会看
不够光亮。网络是一种非常直观的媒体,过去几年中许多新的浏览器功能都非常直观。如果看起来好,很容易说服别人尝试新功能。网络工作者完全是非视觉的;好处是抽象的。开发人员可能会得到它,但对于大多数公司来说,关于花费时间和金钱来改进网站的决定是由非开发人员做出的,这使得网络工作者更难以查看。
答案 1 :(得分:1)
没有工作人员支持的大多数API对我们的许多项目的使用造成了影响。
Firefox在v35之前不会支持Websocket,在v34中没有performance.now,并且没有IndexedDB支持的日期。 Chrome最近才在v38中添加了TextEncoder / Decoder,并且无法传递ImageData。 某些功能可以填充,但其他功能不能,或者特别痛苦地解决目的。
WebSockets尚未完成。
答案 2 :(得分:1)
由于这个问题的大多数答案都已经过了几年,所以这是我对截至2019年5月的当前状况的看法。
Web Workers are now supported in commonly-targeted browsers,我认为浏览器支持不再是其使用的主要障碍。尽管如此,Web Workers仍然不常用,与我互动的大多数Web开发人员都不使用它们。
当然,并非每个网站都需要进行足够的繁重工作来证明Web Worker的合理性。许多网站根本不需要JavaScript。因此,我不希望现实中的大多数网站都看到Web Worker。
但是,“繁重的工作”并不是证明Web Worker合理的唯一因素-另一个是易用性。在许多情况下使用Web Workers都是一项重大挑战。请注意,Web Worker API涉及将构建输出拆分为单独的文件,或者在运行时生成该代码(例如,使用数据URI或fn.toString()
)。 Web开发人员使用许多不同的构建系统,并且在他们的项目中经常有很多依赖项。配置项目以创建具有正确依赖关系的这些其他构建工件可能很困难,或者至少随您拥有的构建系统而有所不同。
此外,对于每个单独的项目,每个Web开发人员几乎总是必须完成这项工作。如果WW通常在开发人员已经依赖的流行库和框架中使用,则可以期望Web Worker的采用率更高。但是它们并不是(出于与API相关的原因,如果我不得不猜测的话),即使对于执行大量同步工作的库也是如此。只要使用主线程是默认的,最简单的操作,这就是大多数开发人员将继续做的事情。
答案 3 :(得分:0)
我的意见:
但是当您需要进行大量计算或在后台运行繁重的流程时,您可以忽略旧浏览器,网络工作人员的工作效果非常好。
答案 4 :(得分:0)
通常,计算的网站是Intranet网站。大多数大公司使用微软产品,他们使用IE作为浏览器。拥有最新版本的IE并不容易,因为升级可能会破坏许多内部网站点。目前我的公司使用IE 9,他们计划在2年内使用IE 10 ....我有很多可以使用Web Workers的应用程序,但我不能,因为我没有IE 10 ......