Как использовать Web Workers в сборку модуля с Requirejs? - PullRequest
9 голосов
/ 12 февраля 2012

У меня есть хорошо работающее приложение, пишущее с 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
 });

Но у меня есть Ошибка определение не определено !!

Я пробовал как этот тоже, но нетуспех !!

Как использовать Web Worker в requirejs или с backbonejs ??

Спасибо!

1 Ответ

12 голосов
/ 11 февраля 2013

Вы можете использовать requireJS от веб-работников: для получения дополнительной информации см. API-документы .

Единственное требование - загрузить requireJS при запуске веб-работника с помощью importScripts(…).Как только он будет загружен, вы можете использовать define и использовать requireJS как обычно.

Для меня, когда я заставлял его работать, ключевой частью было убедиться, что вы также загружаете ту же конфигурацию начальной загрузки (например,config.js или main.js) в веб-работнике, который вы используете в остальной части вашего приложения.Это то, о чем говорит документ, когда говорит:

Вероятно, вам потребуется установить параметр конфигурации baseUrl, чтобы убедиться, что require () может найти скрипты для загрузки.

Другое дело, что вы можете загрузить работника из файла traffic.js с идентификатором модуля (вместо жесткого кодирования пути к скрипту), используя этот плагин requireJS .

...