Итак, я начал изучать, как использовать requirejs и объединить его с некоторыми другими доступными библиотеками javascript. Насколько я понимаю, вам нужно закрепить все библиотеки, которые не являются Asynchronous module definition compatible (AMD), но помимо поиска в библиотечном коде для «требования» есть более простой способ выяснить, какие библиотеки поддерживают AMD, а какие нет? В качестве примера я знаю, что jquery поддерживает AMD, но jqueryui этого не делает, и я знаю это только потому, что «кто-то сказал мне».Как узнать, поддерживает ли библиотека javascript AMD
ответ
Так JQuery заявляет о своей AMD. Это всего лишь куча утверждений if. Если в библиотеках нет library.AMD === true
, нет возможности проверить из самой библиотеки.
if (typeof module === "object" && module && typeof module.exports === "object") {
module.exports = jQuery;
} else {
window.jQuery = window.$ = jQuery;
if (typeof define === "function" && define.amd) {
define("jquery", [], function() { return jQuery; });
}
}
Однако есть возможность проверить уже загруженные модули. This answer заявляет, что вы можете проверить require.s.contexts._.defined
, который представляет собой объект, содержащий сопоставление имен с уже загруженными модулями.
Например, если я загрузил jQuery (который по умолчанию имеет AMD) на страницу, которая также имеет RequireJS, свойство jquery
будет существовать в этом объекте и содержать тот же объект jQuery, что и глобальный. Затем вы можете сравнить. Ниже будет возвращать true
:
require.s.contexts._.defined.jquery === jQuery
require.s.contexts._.defined.jquery === $
Однако, это предполагает, что вы знаете имя модуля и/или есть глобальный для сравнения. Это может не работать во всех случаях. Например, пользовательский интерфейс jQuery - это не просто один большой кусок кода. Это куча плагинов, размещенных под номером jquery-ui.js
. Есть вероятность, что их можно назвать коллективно или модулем для каждого виджета. Пользовательский интерфейс jQuery даже не имеет глобального.
Вы будете искать AMD formatdefine()
вызовов в источниках, где они обычно приходят в трех вариантах:
- не определены модуль AMD, где вам придется настроить подкладку в RequireJS;
- Дополнительная поддержка AMD, в которой обычно наблюдается некоторое обнюхивание для зависимости
define()
в глобальном масштабе внизу; - Первоклассный модуль AMD, где все обернуто в звонок по телефону
define()
.
Хорошо отметить, что вы получите сообщение об ошибке, если вы пытаетесь Призонной шайба модуля AMD по ошибке, или загрузить скрипт как модуль AMD, который никогда не называет define()
создать.
Спасибо за разъяснение этого Филиппа.Просто ради любопытства я сделал быструю проверку на то, получу ли я ошибку, если бы я смонтировал совместимую с AMD библиотеку или наоборот, но насколько я вижу, я ничего не получаю в журнале консоли. У вас есть короткий пример, который показывает это? –
- 1. Поддерживает ли AngularJS AMD как RequireJS?
- 2. Как узнать, какая библиотека javascript принадлежит $
- 3. Как узнать, какая архитектура поддерживает третья статическая библиотека (.a)?
- 4. Как узнать, поддерживает ли сервер HTTP 1.0
- 5. Как узнать, поддерживает ли мой opensl sslv3
- 6. Как узнать, поддерживает ли устройство автофокусировку
- 7. Как узнать, поддерживает ли libstdC++ std :: regex
- 8. Как узнать, поддерживает ли сервер заголовок Range?
- 9. Как узнать, поддерживает ли сервер SSL?
- 10. Как узнать, поддерживает ли Итератор коллекции remove()?
- 11. Как узнать, поддерживает ли устройство Android стереозапись?
- 12. веб-работников: как узнать, поддерживает ли браузер?
- 13. Как узнать, нужна ли мне библиотека
- 14. Как узнать, используется ли моя общая библиотека?
- 15. Как узнать, установлена ли библиотека в Linux?
- 16. Как узнать, нужна ли мне библиотека Markdown?
- 17. Как узнать, устарела ли библиотека Rust?
- 18. Как узнать, использует ли библиотека ARM hardfp?
- 19. Поддерживает ли сбалансированная клиентская библиотека python аутентификацию?
- 20. Как проверить, поддерживает ли браузер Javascript?
- 21. Поддерживает ли библиотека cql python Cassandra v2?
- 22. Как узнать, как работает библиотека?
- 23. Поддерживает ли библиотека YamlDotNet разделитель документов?
- 24. Поддерживает ли библиотека Gensim ускорение GPU?
- 25. Узнайте, поддерживает ли библиотека C++ 11
- 26. Поддерживает ли библиотека Crypto в Parse.com PBKDF2?
- 27. Поддерживает ли библиотека python zlib uuencode?
- 28. Поддерживает ли библиотека fann многоядерные процессоры?
- 29. Библиотека, чтобы узнать тип процессора и функции
- 30. Как узнать, какой Dojo AMD требует предложение без имени?
Вы можете сказать людям, что, когда вы говорите о AMD, вы не говорите о полупроводниковой компании с процессором/видео, но я предполагаю, что вы говорите об [Асинхронном определении модуля] (http: // gregfranko. ком/блог/регистрации-The-jqueryui-виджет на заводе-изготовителе, как-ан-АМД-модуль /). – jfriend00
@ jfriend00, [Asynchronous_module_definition] (http://en.wikipedia.org/wiki/Asynchronous_module_definition), вы знаете, что означает 'OP', не так ли? –
Я НЕ знал, что они имели в виду. Я думал, что они спрашивают о совместимости видеокарт AMD. Только когда я искал в Google, я нашел то, что они имели в виду. Я сам отредактирую вопрос, чтобы убедиться, что это понятно для других читателей. – jfriend00