Как я могу включить jQueryUI в моё модульное приложение backbone.js, используя RequireJS?
Я хочу включить jQueryUI в мое приложение backbone.js, используя RequireJS. Файл main.js, включенный в мой index.html, выглядит следующим образом:
require.config({
paths: {
jquery: 'libs/jquery/jquery-1.7.2.min',
jqueryui: 'libs/jquery/jquery-ui-1.8.18.custom.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-optamd3-min',
text: 'libs/require/text',
templates: 'templates'
}
});
require(['app'], function(App){
App.start();
});
И для каждого файла модели / вида / маршрутизатора я просто включаю пространство имен 'jquery' в начале блока define, как показано ниже:
define([
'jquery',
'underscore',
'backbone',
'views/categoryview',
'text!templates/category.html'
], function($, _, Backbone, CategoryView, categoryTemplate){
// Here comes my code
});
Но jQueryUI не может быть использован в этих файлах. Что-то не так с моим кодом? Или я должен также включить "jqueryui" в каждый блок "define"? Но если я включу "jqueryui" в блок "define", как мне назвать его в функции, чтобы избежать конфликта имен с jquery?
4 ответа
Вы можете включить все файлы, которые исправляют только какой-то другой объект (например, jQuery UI), в ваш основной файл следующим образом (вам нужно убедиться, что jQuery загружен до jQuery UI):
require(['jquery', 'app', 'jqueryui'], function ($, App) { App.start(); });
Другой подход - включить пользовательский интерфейс jQuery в каждый модуль, как вы уже упоминали.
Я лично предпочитаю первый подход, хотя он скрывает зависимости.
В то время как ответ kujakettu, по крайней мере, частично правильный, мне также пришлось указать jQuery как зависимость в моей шимме, чтобы быть уверенным, что jQuery был загружен до jQuery-UI.
например
require.config({
baseUrl: 'scripts/modules',
paths:{
jquery:'../libs/jquery',
jqueryUI:"../libs/jquery-ui",
underscore:'../libs/underscore',
backbone:'../libs/backbone'
},
shim: {
jqueryUI: {
deps: ['jquery']
},
underscore: {
exports: '_'
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
waitSeconds: 15
}
});
Довольно старый пост. Доступен инструмент для конвертации файлов jquery ui в версию AMD, созданный jrburke. Надеюсь, это будет полезно!
Другие ответы немного устарели. JQuery UI поставляется с поддержкой AMD. Если вы хотите весь проект, просто используйте bower install jquery-ui
а затем добавить его в пути. Шим не нужен.
Если вы хотите загрузить подмножество jQuery UI, которое вам нужно в вашем приложении (не загружая лишний раздув), просто используйте bower install jquery-ui
чтобы получить все это, используйте инструмент сборки RequireJS под названием r.js, чтобы создать пакет AMD именно с теми файлами, которые вам нужны.