Использование помощника 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);