如何使用Requirejs将Web Workers用于模块构建?

tro*_*ble 9 web-worker requirejs backbone.js

我有一个用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.
  });
Run Code Online (Sandbox Code Playgroud)

arithmetic.js:

define(["use!underscore", "use!backbone" ],
  function ($, _) { 
      //Here die Operations
 });
Run Code Online (Sandbox Code Playgroud)

但我有错误定义没有定义!!

我试着像这样过,但没有成功!

如何使用Web Worker进入requirejs或使用backbonejs?

谢谢!

Cha*_*had 12

您可以使用Web worker中的requireJS:有关详细信息,请参阅API文档.

唯一的要求是在web worker的开头加载requireJS importScripts(…).加载后,您可以define像使用一样使用和使用requireJS.

当我开始工作时,关键部分是确保您还在您正在使用的其他应用程序中的Web工作器中加载相同的引导程序配置(例如config.jsmain.js).这就是文档说的时候:

您可能需要设置baseUrl配置选项以确保require()可以找到要加载的脚本.

另一件事是你可以traffic.js使用这个requireJS插件从你的文件加载模块ID(而不是硬编码脚本路径).

  • 这里有一个[发生了什么事的图](http://www.plantuml.com/plantuml/svg/XP6nJiD038RtUmeh2yb0sAEg6n83dLg90HYkTrPZcbo2p-aHdXudeIgL42oMp_PlVRyl7YdqbcqBKSO6DJ8v6Th628c-jsDmDNU1FYaS897KO27X7bB7HsIZMY57lGq2sSPIW5tDQ7q6Da9xtLRPqwogNiAIp5F9E5K8QjB2xHeIL10mvOK9dLQP3hLKmFW-46F-d9LbcRrgAARnZtbyvR5PzrsK3SPe3vXd3yXu4s7i1fvH9r6nkflcVgmrkveKSn61fetk0BD7PuU8tnwNklLw09DZxCiporii30OFqxu5lLKMw_tz2OCyKXGCoFcCcixjAyeeUX_qMN5n_h-Bl_WP7T89_IyMfbyPBxnV.svg). (2认同)