Javascript 为什么不';网络工作者使用的更多吗?
无论是作为博客帖子的主题,还是在演讲中提到的,我都会不时地接触到这项技术 在我最近参加的一次演讲中,演讲者谈到了网络工作者: 我不太清楚为什么它们没有被更多地使用 经过思考,我意识到,对于一项具有如此明显好处的技术,网络工作者的采用似乎相当缓慢,或者说非常狭窄Javascript 为什么不';网络工作者使用的更多吗?,javascript,multithreading,html,web-worker,Javascript,Multithreading,Html,Web Worker,无论是作为博客帖子的主题,还是在演讲中提到的,我都会不时地接触到这项技术 在我最近参加的一次演讲中,演讲者谈到了网络工作者: 我不太清楚为什么它们没有被更多地使用 经过思考,我意识到,对于一项具有如此明显好处的技术,网络工作者的采用似乎相当缓慢,或者说非常狭窄 网络工作者是否有一些固有的问题使他们变得不那么有用?我只是在错误的地方寻找使用它们的例子吗?还是说Javascript程序员一般不太习惯于创建多线程应用程序。主要原因是它们没有被广泛使用(在我看来): 惯性。它们是一项相对较新的技术,人们
网络工作者是否有一些固有的问题使他们变得不那么有用?我只是在错误的地方寻找使用它们的例子吗?还是说Javascript程序员一般不太习惯于创建多线程应用程序。主要原因是它们没有被广泛使用(在我看来):
但是,当您需要在后台进行大量计算或运行繁重的过程时,您可以忽略旧浏览器,web Worker工作得非常好。通常,进行计算的网站是内部网站。大多数大公司使用微软的产品,他们使用IE作为浏览器。拥有最新版本的IE并不容易,因为升级会破坏许多intranet网站。目前我的公司使用IE9,他们计划在两年内推出IE10。。。。我有很多可以使用Web Workers的应用程序,但我不能,因为我没有IE 10…Workers中支持的大多数API使我的许多项目无法使用它们 Firefox在v35之前不会有Websocket支持,performance.now在v34中,IndexedDB支持也没有日期。 Chrome最近才在v38中添加了文本编码器/解码器,无法传递图像数据。 有些功能可以填充,但其他功能不能填充,或者在违背目的的情况下工作会特别痛苦
WebSocket还没有完成。由于这个问题的大多数答案都是几年前的事,以下是我对2019年5月的现状的看法 ,我认为浏览器支持不再是使用它们的一个重大障碍。尽管如此,网络工作者仍然没有被广泛使用,我接触的大多数网络开发人员也没有使用他们 当然,不是每个网站都需要做足够的繁重工作来证明一个网络工作者是正当的;许多网站根本不需要JavaScript。所以,我不希望在大多数网站上现实地看到网络工作者 但“繁重的工作”并不是证明网络工作者正当性的唯一因素——另一个因素是易用性。网络工作者在许多情况下都是一个巨大的挑战。请注意,这涉及到将构建输出拆分为单独的文件,或在运行时生成该代码(例如,使用数据URI或
fn.toString()
)。Web开发人员使用许多不同的构建系统,并且在他们的项目中通常有许多依赖项。配置项目以创建这些具有正确依赖关系的附加构建工件可能很困难,或者至少它随您拥有的构建系统而变化
此外,对于每个单独的项目,这项工作几乎总是由每个web开发人员完成。如果WWs在开发人员已经依赖的流行库和框架中被普遍使用,那么您可以期待更高的Web工作者采用率。但事实并非如此(如果我不得不猜测的话,是因为与API相关的原因),即使对于进行大量同步工作的库也是如此。只要使用主线程是默认的、最容易做到的事情,大多数开发人员都会继续这样做。这是一个意见问题,因此可能会因为Stackoverflow的主题之外而被关闭。不过这是一个有趣的问题。@Spudley我很害怕这个问题-我对人们的意见很感兴趣,尽管它会持续下去。我认为,通过一些改写,它可能会变得更加客观-一个询问网络工作者的问题,以防被采纳的问题可能是广泛的,但我认为这比现在出现的基于观点的问题要好