Ошибка при загрузке модуля (AMD) с помощью require.js - PullRequest
0 голосов
/ 18 февраля 2012

В этот момент я немного разочарован requirejs.

Я пытаюсь загрузить jquery и другие библиотеки в свой файл App.coffee.Проблема в том, что я не могу загрузить зависимости модуля в моем определении.Некоторые из входных аргументов (jq, jsn и т. Д.) Являются нулевыми или просто объектами HTMLDocument.Это изменяется в зависимости от перестановки плагинов, которые я пробую: 'order', 'domReady' или none.

Мой каталог js lib выглядит как A).И мой файл App.coffee выглядит как B).Я попытался использовать «пути» в require.config и просто необработанные ссылки на файлы (что вы видите ниже).Я знаю об интеграции requirejs-jquery.Но разве я не смогу заказать загрузку моего плагина ?

Я получаю другой набор ошибок, если я пытаюсь назвать путь.Я вижу, кто-то предложил jquery 1.7 ( также здесь ).Это работает?Сначала я хотел сделать шаг назад и убедиться, что у меня есть правильные концепции.i) require.config ii) определение модуля с зависимостями, iii) плагин заказа и т. д.

Если я правильно понизил эти понятия, я бы подумал, что это проблема версии jquery.Однако это не просто зависимость от jquery.И невероятно утомительно терять время таким образом.Любая помощь приветствуется.Заранее спасибо.

A)


    $ tree js/lib/
    js/lib/
    ├── backbone.js
    ├── backbone_loader.js
    ├── domReady.js
    ├── jquery-1.6.3.js
    ├── json2.js
    ├── order.js
    ├── pure.js
    ├── require.js
    └── underscore.js

B)


    require.config({
      baseUrl: "/js",
      paths:
        order : '/js/lib/order'
        jQuery : '/js/lib/jquery-1.6.3'
        json2 : '/js/lib/json2'
        Underscore : '/js/lib/underscore'
        Backbone : '/js/lib/backbone_loader'
        pure : '/js/lib/pure'
    })


    define( [ 'js/lib/order!js/lib/jquery-1.6.3',
              'js/lib/order!js/lib/json2',
              'js/lib/order!js/lib/underscore',
              'js/lib/order!js/lib/backbone',
              'js/lib/order!js/lib/pure',
              'js/lib/order!js/bkeeping/models', ]
      (jq, jsn, und, bbn, pur, models) ->

        console.log('bkeeping LOADED')

        # return an object with the models in it  
        models : models
        jQuery : jq.noConflict()
        json2 : jsn 
        Underscore : und.noConflict()
        Backbone : bbn.noConflict()
        pure : pure
    )

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Спасибо за указание на это.

Но я пошел в jquery-1.7, но все равно пришлось вытащить из глобального пространства, чтобы получить объект. Это относится и к другим моим библиотекам, и к их зависимостям. В итоге я вернул объект с зависимостями. Я загрузил библиотеку с помощью плагина заказа .

Контракт объектов зависимостей, передаваемых в вашу функцию обратного вызова (jq, pur, jsn и т. Д.), Просто не работает для этих библиотек. Это работает для моих определенных модулей (например, моделей), но не для внешних библиотек. Я попробовал плагин use , но обнаружил, что он не работает для подчеркивания и магистрали или неправильно настроил его. Это мое подходящее решение на данный момент; хотя я должен сказать, что головные боли серьезно затуманивают преимущества для require.js.


    define( [ 'order!js/lib/jquery-1.7',
              'order!js/lib/pure',
              'order!js/lib/json2',
              'order!js/lib/underscore',
              'order!js/lib/backbone',
              'order!bkeeping/models', ]
      (jq, pur, jsn, und, bbn, models) ->

        console.log('bkeeping LOADED')

        # return an object with the dependencies in it 
        models : models
        jQuery : jQuery.noConflict()
        pure : pur                      # pure and json2 objects are simply used in other libs. I don't need them directly
        json2 : jsn 
        Underscore : _.noConflict()
        Backbone : Backbone.noConflict()
    )

0 голосов
/ 18 февраля 2012

Последний jQuery поддерживает загрузчики AMD и будет нормально работать с require.js.Подчеркивание и Backbone не нужны, и вам нужно будет либо:

  1. использовать измененную версию, например one от автора require.
  2. useплагин.Я нашел применение!плагин от здесь , чтобы идеально соответствовать моим потребностям.
...