Использование помощника Dustmotes-if

Я загружаю (через requirejs) (последние версии) пыль и пылесборники следующим образом

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        ... //my other dust custom helpers
    });
});

Все работает хорошо - я могу использовать логику "пыль / помощник по пыли". Но теперь я хотел бы использовать пыльники, если помощник и попробовал следующее

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        require(["./Scripts/dustmotes-if"], function () {
            ... //my other dust custom helpers
        });
    });
});
  • однако - он достигает строки "require(["./Scripts/dustmotes-if"], function () {" и пропускает до конца (закрывающую фигурную скобку), не заходя внутрь, чтобы выполнить "мои другие пользовательские помощники пыли" Обратите внимание, что я проверил путь к файлу, чтобы быть в порядке.

Я также попытался удалить логику "require(["./Scripts/dustmotes-if"], function () {" и заменить ее просто "require(["./Scripts/dustmotes-if"]);" - хотя код выполняется, хелпер 'if' не загружается в коллекцию хелперов и, следовательно, ссылка на хелпер 'if' в коде пыли приводит к "Helper", если "не существует".

Кто-нибудь пробовал это или есть какие-либо идеи. Ссылка на http://www.dustjs.com/ самом деле не охватывает вышеупомянутый сценарий - также, большая часть документации / сообщений на форуме в Интернете ссылается на старые версии dustjs и requirejs

1 ответ

Решение

Проблема заключалась в том, что @Interrobang предложил, чтобы он был загружен как IIFE.

Несколько вещей, на которые стоит обратить внимание

  • поскольку IIFE работает в пределах своей собственной области и требует, чтобы объект пыли передавался в качестве параметра, я назначил объект пыли объекту окна (см. ниже)
  • Dustmotes- если ссылался на старую версию библиотеки пыли, поэтому ее пришлось изменить - с "...require('dustjs-linkedin')..." на "...require('dust-full')...".

Таким образом, конечный код был следующим

...
define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        window.dust=dust;
        $.getScript("./Scripts/dustmotes-if.js")
        .done(function(script,textStatus) {
            console.log(textStatus);
        })
        .fail(function(jqxhr,settings,exception) {
            console.log('Triggered ajaxError handler:'+exception.message);
        });
        ...

и в dustmotes-if.js

...
})(typeof exports !== 'undefined' ? module.exports = require('dust-full') : dust);
Другие вопросы по тегам