разработка в стиле додзё - PullRequest
       22

разработка в стиле додзё

0 голосов
/ 21 сентября 2011

Мне трудно обернуть голову в стиле кодирования додзё.Причина, по которой я обращаюсь к нему, заключается в его кодировании стиля класса.Я сделал AS разработки и немного Java, поэтому имеет смысл быть привлеченным к нему.Я проделал некоторую работу с DOM в стиле jquery, но мне требуется более основанная на фреймворке настройка для проекта, который я начинаю.Мой вопрос заключается в том, должен ли я создавать все как классы с объявлением, а затем требовать их при необходимости.Или я мог бы написать функции типа замыкания с пространствами имен, как обычные модули javascript.Я в замешательстве.

Пример Я хочу иметь группу методов, которые позаботятся об управлении данными.Затем я хочу иметь другую коллекцию методов, которые обрабатывают специальные вызовы AJAX.Буду ли я создать класс с объявить для каждой из этих групп методов, в отдельных файлах js.Затем в моем app.js, который является моим классом приложения, в котором я выполняю инициализацию всех моих классов, я бы потребовал оба этих класса до dojo.ready () {}, а затем, когда вызван готовый метод, я могу начать использовать эти классы.классы.

Может кто-нибудь выставит меня прямо перед тем, как я выйду.Требует сделать запрос на загрузку для этого файла JS, и если это так, вы всегда должны использовать готовый метод.Если это так, то лучше всего, чтобы начальная инициализация приложения требовала кучу ваших классов.

1 Ответ

2 голосов
/ 21 сентября 2011

Технически для того, что вы хотите сделать, вы можете пойти любым путем - используя 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/

...