Технически для того, что вы хотите сделать, вы можете пойти любым путем - используя dojo.declare
или просто создав объект с членами-функциями. Я был бы склонен сделать последнее, так как сложные соображения наследования dojo.declare
будут полным излишним, что вы не будете использовать в этом случае, и, как правило, не имеет смысла что-либо создавать, когда вы просто хочу сгруппировать некоторые служебные методы вместе.
Для модулей, которые просто группируют служебные методы вместе, я был бы склонен сделать что-то вроде этого:
dojo.provide('my.utils');
my.utils = {
doSomething: function(){
/* do something... */
},
doSomethingElse: function(){
/* do something else... */
}
};
RE загружается, если я вас правильно понял, тогда да, у вас есть правильная идея. На вашей веб-странице вы должны были бы dojo.require(...)
модули, которые требуются для вашей страницы (возможно, только один, если у вас есть все остальные зависимости, необходимые для него). Затем любой код на странице, который ожидает загрузки этих модулей, должен находиться внутри функции, переданной в dojo.ready
. Это гарантирует, что даже в тех случаях, когда модули загружаются асинхронно (т.е. с использованием междоменного загрузчика), ваш код все равно будет работать. dojo.ready
специально ожидает (1) готовности DOM и (2) загрузки всех модулей dojo.require
d до этой точки.
Обратите внимание, что внутри самих модулей вам НЕ нужно заключать код в dojo.ready
ради ожидания загрузки модулей dojo.require
d; это выясняется загрузчиком автоматически. (Однако, если какая-то логика в вашем модуле должна ждать готовности DOM, вы все равно будете полагаться на dojo.ready
.)
Я писал больше о dojo.ready
в прошлом; может быть, это будет полезно прочитать: http://kennethfranqueiro.com/2010/08/dojo-required-reading/