Пример создания модуля для применения в составе версии XDomain

Рассмотрим небольшой конкретный пример использования инструкций dojo.require и dojo.provide. Для начала рассмотрим простой модуль, реализующий такую тривиальную функцию, как функцию вычисления членов последовательности Фибоначчи. В примере 2.3 ресурс связан с модулем. И хотя группировка ресурсов в модули не является строго обязательной, тем не менее практически всегда это целесообразно. В этой книге вам часто будет встречаться имя dtdg (от «Dojo: The Definitive Guide1»), используемое в качестве общего пространства имен для модулей.

Пример 2.3. Определение простого модуля (dtdg.foo)
/*
Инструкция dojo.provide указывает, что файл .js с исходным программным кодом образует модуль dtdg.foo. Семантически модуль dtdg.foo также образует пространство имен для функций, входящих в состав модуля. На диске этот файл мог бы иметь имя foo.js и находиться в каталоге dtdg.
*/
dojo.provide("dtdg.foo");
//Обратите внимание: функции объявляются относительно пространства имен модуля
dtdg.foo.fibonacci = function(x) {
if (x < 0)
throw Exception("Illegal argument");
if (x <= 1)
return x;
return dtdg.foo.fibonacci(x-1) + dtdg.foo.fibonacci(x-2);
}

Предположим, когданибудь, при создании другой страницы, вы решили использовать свой модуль dtdg.foo, чтобы удивить юных математиков из начальной школы.


Вместо того чтобы заново переписывать хорошо протестированную функцию и тем самым повышать вероят
ность появления ошибок, вы можете снова использовать свой модуль, подключив его с помощью dojo.require. В примере 2.4 показано, как вы можете использовать локальный модуль совместно с инструментальным набором, загружаемым из CDN. В этом примере предполагается, что этот файл HTML сохранен в каталоге, содержащем каталог dtdg, в котором находится модуль из примера 2.3.
Пример 2.4. Использование локального модуля в процедуре самонастройки XDomain


Fun With Fibonacci!
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js"
djConfig="baseUrl:'./'">


(body)
(/body)


Этот пример наглядно демонстрирует, насколько просто с помощью dojo.require подключить ресурс к странице и затем использовать его.


Кроме того, здесь имеется несколько интересных моментов, которые следует отметить особо.

В случае использования локальной копии инструментарий Dojo с точки зрения модулей выглядит как корневой каталог, но при использовании версии XDomain «настоящий» корневой каталог инструмента рия находится гдето на одном из серверов компании AOL. Поэтому, чтобы определить начальную точку поиска локальных модулей, в данном случае – dtdg.foo, в массиве djConfig явно задается значение параметра baseUrl.

Функция dojo.registerModulePath просто связывает пространство имен верхнего уровня (первый аргумент функции) с именем каталога относительно baseUrl (второй аргумент).

Все, что определяется в вашем модуле, станет доступно для использования в результате вызова dojo.require. Например, если предположить, что модуль dtdg.foo содержит дополнительные функции или переменные, они будут доступны после выполнения инструкции dojo.re-quire("dtdg.foo"). Как обычно, мы нигде не обращаемся к содержимому dtdg.foo за пределами блока addOnLoad.

Возможно, в предыдущем примере вы также заметили вызов функции dojo.body(). По сути, это упрощенный способ получить доступ к телу текущего документа в противоположность менее удобному методу do-cument.body..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
Аргументы «функции в виде строк»
Блочная модель
Грубое определение типа
Добавление узлов
Зачем управлять беспорядком

Вернуться в раздел: Dojo / Утилиты броузера