Требуется один модуль из связанной библиотеки (т.е. jquery-ui)

Я создаю приложение с помощью Durandal, что означает, что я использую requirejs, Я решил использовать могучий knockout-sortable плагин. Оказывается, он использует jquery-ui особенности внутри, что приятно. Я также определил весь jquery-ui пакет в моем приложении, поэтому в моем requirejs Конфигурация это фигурирует как

"jqueryui": "../Scripts/jquery-ui-1.10.3.custom",

Более того, автор плагинов использует загрузку AMD, чтобы получить jquery.ui.sortableи вот проблема. jquery-ui кажется, не определяет себя с requirejs, ни весь пакет, ни отдельные модули.

Должен ли я импортировать какой-либо модуль из jquery-ui отдельно и для каждого определения пути в requirejs конфиг, так что он явно виден или есть способ сказать requirejs что уже есть это jquery.ui.sortable модуль вокруг внутри jquery-ui что плагин просит?

1 ответ

Решение

Вы должны иметь возможность установить простой псевдоним, используя path конфиг requirejs

paths: {
  'jquery.ui.sortable': 'jquery-ui'
}

Или, если это не сработает, вы можете использовать map конфиг

map: {
  '*': {
    'jquery.ui.sortable': 'jquery-ui'
  }
}

Или при использовании map, вы могли бы даже настроить псевдоним для этого одного плагина

map: {
  'THE-JQUERY-UI-PLUGIN-ID': {
    'jquery.ui.sortable': 'jquery-ui'
  }
}

Этот последний делает так, что когда рассматриваемый плагин делает require("jquery.ui.sortable") назвать это на самом деле тянет jquery-ui модуль, который вы знаете, имеет встроенную сортируемую функциональность.

Там также существует jquery-ui-amd проект, который мне очень нравится использовать. Этот проект конвертирует все jquery-ui модули в отдельные модули AMD https://github.com/jrburke/jqueryui-amd. Вы можете использовать это для более легкой и более модульной интеграции в ваш проект. Тем не менее, даже тогда вам понадобится псевдоним, так как ваш плагин требует jquery.ui.sortable, но в jquery-ui-amd идентификатор будет jquery-ui/sortable,

Другие вопросы по тегам