我有一个用Requirejs和Backbonejs编写的应用程序很好的应用程序,但有时候它确实在减速...例如,当它要进行一些算术工作时!我尝试使用Web Worker来完成这样的算术运算:
我的模块(traffic.js):
define(["jquery", "use!underscore", "use!backbone", "namespace" ],
function ($, _, Backbone, globals) {
.....
var worker = new Worker("arithmetic.js");
worker.addEventListener('message', function(e) {
console.log(e.data);
}, false);
worker.postMessage(globals.data); // Send data to our worker.
});
arithmetic.js:
define(["use!underscore", "use!backbone" ],
function ($, _) {
//Here die Operations
});
但我有错误定义未定义!!
我尝试了this,但没有成功!!
如何将Web Worker用于requirejs或使用backbonejs?
谢谢!
答案 0 :(得分:12)
您可以使用网络工作者的requireJS:有关详细信息,请参阅API docs。
唯一的要求是在importScripts(…)
的Web工作者的开头加载requireJS。加载后,您可以使用define
并使用requireJS,就像正常一样。
当我开始工作时,关键部分是确保您还在正在使用的Web工作者中加载相同的引导程序配置(例如config.js
或main.js
)在你的应用程序的其余部分。这就是文档在谈到时所说的:
您可能需要设置baseUrl配置选项以确保require()可以找到要加载的脚本。
另一件事是您可以使用this requireJS plugin从traffic.js
文件加载具有模块ID的工作者(而不是硬编码脚本路径)。