在Meteor客户端使用Web工作者

时间:2016-05-04 08:13:33

标签: javascript node.js meteor web-worker jspdf

我有一个流星应用程序。在客户端,我得到了一个繁重的计算,在执行时会冻结浏览器中的整个选项卡。 所以我想使用Web Workers来避免冻结并更好地处理这个过程(终止,加载信息百分比等)。

为了让网络工作者工作,我必须在我的webworker.js中添加一个自写package.js

所以我的主要问题是:如何在流星应用程序(客户端)中设置网络工作者?

首先我尝试了以下事项:

通过api.addFile()使用裸选项添加文件。

Package.describe({
  name: 'some:name',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: 'Generates PDFs',
  // URL to the Git repository containing the source code for this package.
  git: '',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function(api) {
    api.versionsFrom('1.1.0.2');
    api.use(['mrt:redis@0.1.3'],
    'server',
    {weak: false, unordered: false}
    );
    api.addFiles([
        "vendor/FileSaver.js",
        "vendor/jspdf.debug.js",
        "dcPDF.js"
    ],["client"]);
    api.addFiles([
        "server.js"
    ],["server"]);
    api.addFiles(["pdfProgressWorker.js"],["client"], {bare: true});
    api.export('DCPDF');
});

Meteor压缩包中的所有文件。要正确设置工作者,我必须在客户端部署webworker.js作为自己的js文件。裸选项似乎不适用于这种情况。如果我以这种方式包含文件,我的js文件无法调用webworker.js

第二次尝试:

我将webworker.js添加到/public文件夹。

问题在于:我的webworker.js使用了一些我已经包含在我自己的包中的外部库。如果我将webworker.js添加到公共文件夹,我还必须添加所有外部js-libaries,这些都在我的meteor应用程序中的每个站点上加载,这会减慢我的整个应用程序。不是故意的,不可维护的,不是流星式的(我认为)。

0 个答案:

没有答案