jQuery / Dojo-как использовать jQuery с Dojo toolkit
Как использовать jQuery с Dojo toolkit? Я слышал, что обе библиотеки используются одновременно, jQuery для DOM-related и Dojo для UI (dijit), но я не могу найти никаких учебников или примеров этого. Возникнут ли какие-либо конфликты или проблемы при загрузке обеих библиотек?
5 ответов
вы можете использовать их рядом друг с другом без проблем, потому что Dojo не переопределяет$, как некоторые другие библиотеки javascript.
вы можете использовать jQuery, потянув его в свое приложение через тег скрипта в голове вашего сайта, конфликтов с dojo не будет.
однако что-то иметь в виду при использовании jQuery с dojo, особенно с dojo версии 1.8 и его полная поддержка AMD. Это чище (особенно, если вы не можете вытащить jQuery в голове вашего сайта), чтобы воспользоваться AMD (определение асинхронного модуля). Вам нужно будет сделать запись пакета в сценарии конфигурации dojo, чтобы правильно вытащить в рамках. Вот пример, который использует расположение библиотеки для jquery и jQuery-ui...
<!-- external library configuration code included in header to make sure this
is loaded before code in body-->
<!-- dojo config -->
<script>
/* Instead of using the inline dojo-config attribute
* create this variable so we can configure dojo here.
* This seems a little clearer, easier to read as a config.
*/
var dojoConfig = {
baseUrl: "./",
async: true,
isDebug: true,
parseOnLoad: false,//false to allow for us to call this independantly in js later on
//here are the packages dojo will be aware of and related js files
packages: [
//dojo specific packages
{name: "dojo", location: "libs/dojo"},
{name: "dijit", location: "libs/dijit"},
{name: "dojox", location: "libs/dojox"},
{name: "jquery", location: "libs/jquery", main: "jquery-1.8.2"},
{name: "jqueryui", location: "libs/jquery", main: "jquery-ui-1.9.1"},
]
};
</script>
в моей структуре папок просто есть папка libs в корне, поэтому у меня есть "./ "для базового url, но вы могли бы так же легко вытащить из cdn местоположения.
без этой записи конфигурации jQuery не будет функционировать должным образом, и вы можете получить"не функция " в консоли появляются ошибки.
Если вы поместите отдельный тег скрипта, чтобы вытащить jQuery или другую стороннюю структуру, а также использовать AMD для того же самого, вы просто потянете его во второй раз, когда вы требуются это для додзе в первый раз.
вы можете использовать загрузчик AMD Dojo для загрузки jQuery.
следующий фрагмент даже псевдонимы $
to dojo.query
и все еще использует jQuery без конфликта (я не рекомендую его, Хотя!):
define.amd.jQuery = true;
require(["jquery", "dojo/query", "dojo/NodeList-dom"],
function(jquery, $) {
$("output").style("visibility", "visible"); // using Dojo
jquery("#output").css("visibility", "hidden"); // using jQuery
});
полное описание и исходный код: загрузка jQuery с загрузчиком Dojo 1.7 AMD
вы можете, например, jQuery пространства имен, чтобы избежать конфликтов.
проверить http://docs.jquery.com/Using_jQuery_with_Other_Libraries
jQuery поддерживает AMD уже довольно давно.
вы можете использовать свойство "пути" вашей конфигурации ADM, чтобы сообщить загрузчику AMD, где найти jQuery:
var amdconfig = {
baseUrl: __AMD_CONFIG_BASE_URL__,
packages: [
{name: "dojo", location: "./lib/dojo"},
{name: "app", location: "./app"}
],
paths: {
jquery: "./lib/jquery/jquery-1.12.4"
}
};
затем вы можете импортировать jQuery в модули ADM так же, как вы импортируете любой другой модуль AMD, и использовать его вместе с модулями Dojo:
define([
"dojo/dom",
"jquery"
], function(
dom,
$
) {
...
});
Примечание
вы можете использовать ту же конфигурацию для проектов AMD, которые используют RequireJS вместо Dojo:
if (require.config) {
// RequireJS
require.config(amdconfig);
} else {
// Dojo
require(amdconfig);
}