2013-05-10 2 views
0

Я пытаюсь создать структуру папок here.using require.js для загрузки библиотек javascript

Разница заключается в использовании всей последней версии этих библиотек. Однако они неправильно загружаются, даже jquery. Я не мог понять, что под AMD совместимо.

Я просто загрузил эти библиотеки. Означает ли это, что они не совместимы с AMD? Есть ли отдельная совместимая с AMD версия этих библиотек ?. Нужно ли использовать конфигурацию shim для загрузки совместимых с AMD ?.

Я боюсь использовать прокладку, потому что официальная документация require.js говорит, что это не рекомендуется.

ответ

1

Я не мог найти упоминания о том, что shim «не рекомендуется» в документации; Я бы не стал слишком беспокоиться об этом. Это проверенный и все более популярный способ подключения библиотек, не совместимых с AMD, с требованиями RequireJS (ранее единственным способом сделать это было создание отдельной версии AMD, завершенной в вызове define, что придает дополнительные усилия разработчикам библиотек) ,

Если по «последней версии развития» вы имеете в виду Pre-Release JQuery строит, похоже, что он делает поддержки AMD (взгляните на pre-release section на странице загрузки, прокрутите вниз до самого дна source code file: вы увидите код, относящийся к AMD)

Backbone и underscore нужно быть подкладками в любом случае, так как они AMD-агностик, так что нет никакой возможности избежать из него (этих две частных библиотек даже используется в shim config option documentation example, так что вы можете просто повторное использование).

2

@ права kryger, что jQuery совместим с AMD, и нет ничего плохого в том, что shimming не-AMD модули.

Совместимость с AMD означает, что модуль придерживается AMD specification; следовательно, он экспортирует свою функциональность. Например:

define(['jquery', 'underscore'], function ($, _) { 
    // function body 
}); 

Таким образом, в теле функции, выше:

  • вы можете получить доступ к JQuery через $ аргумента; но
  • underscore не экспортирует себя для AMD, поэтому аргумент _ будет undefined.

Некоторые AMD-совместимые модули (например, JQuery) также работают «автономно», например, как в HTML <script> тег, в котором они будут экспортировать в глобальное пространство имен (например, window.$).

Я думаю, Jquery еще экспортирует глобальный $, когда вы загрузите его с помощью загрузчика AMD, так что вы можете просто загрузить JQuery один раз в вашей точку входа/когда он первый нужен и всегда доступ к глобальной $ (а не определять $ аргумент).

Также, если вы используете плагины jQuery (которые изменяют глобальный), все это может немного запутать!