在WebWorkers中使用NPM模块(或在NPM模块中使用WebWorkers)

时间:2018-06-20 06:31:07

标签: javascript typescript npm web-worker

我正在开发一个Web应用程序,该应用程序需要做一些繁重的工作,这些工作目前阻塞了整个线程。我希望在WebWorker中完成此任务,并在我的应用程序中显示进度栏。

我的问题是,看起来您只能使用self.importScripts('lib.js')在Webworker中导入单个文件。

我正在使用的库(一个执行CPU密集型任务的库)是我自己用打字稿编写的。但是tsc的输出是许多较小的文件,因此我不能在Webworker中使用它们。 Typescript确实支持将所有内容捆绑到一个文件中,但仅在使用amd时(我在使用commonjsamd时会产生构建错误)。

另一种方法,我实际上更喜欢的方法是,直接在我的库中使用WebWorkers。因此,我不必再担心在我的应用程序中,它们都将在NPM模块本身内部处理。但是,尝试这样做时遇到了两个问题:

  • 我在库中使用的NPM模块遇到了与上述相同的问题

  • 添加WebWorker文件并在由tsc编译的代码中对其进行引用时,对该WebWorker的引用不再有效(并且也永远不会从{{1}中复制出来) },因此如果不更改应用程序的构建步骤就无法引用它)。我读到您可以使用内联WebWorkers,但我还没有找到一种简单的方法来做到这一点,说实话,这似乎有点不客气。

我找不到内部使用Webworkers的任何NPM模块,我不确定为什么。您可以给我的任何帮助或阅读资源将不胜感激。

0 个答案:

没有答案