Использование jquery с requirejs

У меня есть две библиотеки javascript, одну из которых я написал как коннектор, а другую — стороннюю библиотеку «bootbox.js». Я использую requirejs для настройки своей пользовательской библиотеки, однако я не уверен, как сделать то же самое для bootbox.js без изменения кода js bootbox.

ошибка js, которую я получаю.

TypeError: $ is not a function

Текущая конфигурация.

warnings.js

requirejs.config({
    "shim": {
        'bootbox': {
            deps: ['./jquery']
        }
    }
});

define(["./jquery", "./vendor/bootbox"], function($) {

    var int;

    int = function(spec) {
        $('#' + spec.id).dialog({do something});
    }

    return int;
}

а теперь bootbox.js

window.bootbox = window.bootbox || (function init($, undefined) {
  "use strict";
    //do something
}(window.jQuery));

Кто-нибудь знает, как заставить js-библиотеку bootbox использовать пространство имен jquery?


person Code Junkie    schedule 07.10.2013    source источник
comment
Вы пробовали это? requirejs.org/docs/jquery.html#shimconfig См. также: stackoverflow.com/ вопросы/15471088/   -  person explunit    schedule 07.10.2013
comment
Я попробовал requirejs.config({ shim: { ./vendor/bootbox: [jquery] } }); но я просто действительно смущен тем, как это работает. Я попробую прочитать эту статью еще раз.   -  person Code Junkie    schedule 07.10.2013
comment
если вы не можете заставить его работать, также опубликуйте свой раздел require.config   -  person explunit    schedule 07.10.2013
comment
@explunit requirejs настраивается фреймворком Tapestry5. Я не делаю ничего, кроме вызова сценария предупреждений.   -  person Code Junkie    schedule 07.10.2013


Ответы (1)


в файле app.js

require.config({
    ....
    shim: {
        'bootbox': {
            deps: ['./jquery'] --> dependancies 
        }
    }
)}

это означает, что когда вы

require('bootbox') 

тогда require.js сначала принесет jquery, а затем загрузит другой файл. посетите эту ссылку для получения дополнительной информации.

person Hussein Nazzal    schedule 07.10.2013
comment
Просто будьте очень осторожны, если вы загружаете jquery из CDN, если вы делаете это. См. requirejs.org/docs/api.html#config-shim и посмотрите в разделе «Важные примечания оптимизатора для конфигурации оболочек» - person deitch; 07.10.2013
comment
спасибо, я посмотрю на это .. потому что я делаю это все время :( - person Hussein Nazzal; 07.10.2013
comment
Я тоже был. Я не могу вспомнить, как я это решил, в последнее время больше работал на стороне сервера и только сейчас вернулся к клиенту. - person deitch; 07.10.2013
comment
@HusseinNazzal Должен ли я обернуть прокладку в requirejs.config? а что такое отделы? Спасибо. - person Code Junkie; 07.10.2013
comment
@HusseinNazzal по-прежнему не повезло :/, я все еще получаю следующую ошибку. TypeError: $ не является функцией var appendTo = $(body); Я делаю следующее: warnings.js requirejs.config({ shim: { 'bootbox': { deps: ['./jquery'] } } }); define([./jquery, ./vendor/bootbox], function($) { и я не добавляю никакого кода в bootbox. - person Code Junkie; 07.10.2013
comment
Я полагаю, что делаю все, как вы указали? Это проблема пространства имен? - person Code Junkie; 07.10.2013
comment
я думаю, вы имеете в виду require(["./jquery", "./vendor/bootbox"] не определить - person Hussein Nazzal; 07.10.2013
comment
Я просто изменил свой вопрос выше, чтобы отразить текущую конфигурацию кода. Ошибка происходит изнутри bootbox. - person Code Junkie; 07.10.2013