我有一个流星应用程序。在客户端,我得到了一个繁重的计算,在执行时会冻结浏览器中的整个选项卡。 所以我想使用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应用程序中的每个站点上加载,这会减慢我的整个应用程序。不是故意的,不可维护的,不是流星式的(我认为)。