Типичный способ справиться с этим - загрузить базовые свойства из встроенного файла и позволить пользователям приложения указать дополнительный файл с переопределениями. Какой-то псевдокод:
Properties p = new Properties();
InputStream in = this.getClass().getResourceAsStream("c.properties");
p.load(in);
String externalFileName = System.getProperty("app.properties");
InputStream fin = new FileInputStream(new File(externalFileName));
p.load(fin);
Ваша программа будет вызываться примерно так:
java -jar app.jar -Dapp.properties="/path/to/custom/app.properties"
Первое, что нужно сделать, это познакомиться с объектной моделью Dojo. В JavaScript нет системы классов, поэтому инструментарий Dojo создал своего рода «условную» объектную модель, которая работает довольно хорошо, но сильно отличается от того, как, например, в Java.
Я предлагаю ознакомиться с ним, чтобы вы могли копаться в базе кода всякий раз, когда начинаете испытывать проблемы. Доступная документация значительно улучшилась за последний год, но время от времени я обнаруживаю, что мне приходится исправлять ошибку в моем коде, точно узнавая, как работает задействованный код Dojo.
Еще один совет - использовать функцию настраиваемой сборки, которая значительно повысит производительность, когда ваше приложение будет готово.
В качестве общего совета по программированию DHTML используйте firebug (плагин для Firefox). Он позволяет отладку JavaScript, проверку DOM, редактирование HTML в реальном времени и многое другое. Я полностью полагаюсь на это сейчас, когда работаю в DHTML!
Удачи!
Я тоже только что нырнул в Dojo, у них есть хорошая документация по API на http://api.dojotoolkit.org/ . Даже Dojo Campus имеет несколько хороших примеров плагинов.
Если вы спросите меня, O'Reilly's Dojo: The Definitive Guide - лучшая книга о додзё на рынке.
] Я также хотел бы получить любые советы и рекомендации от мастеров Додзё.
Ура
Убедитесь, что документация, которую вы читаете, относится к как можно более последнему выпуску, так как многое изменилось очень быстро в архитектуре Dojo.
Также отличный способ увидеть, как некоторые Dojo или Dijit виджет используется для просмотра исходного кода тестов - например, DataGrid
имеет плохую документацию, но тесты показывают множество вариантов использования и конфигураций.
Sitepen - хороший ресурс для Статьи Dojo .
Также прочтите Deferred
(и DeferredList
), а также hitch ()
- два чрезвычайно гибких и мощные функции Dojo. На SitePen есть отличная статья о демистификации отложенных
s.
Ознакомьтесь с plugd , коллекция расширений Dojo, которые делают некоторые вещи более удобными или добавляют некоторые умные функции к языку. Он сделан одним из основных авторов Dojo, поэтому он довольно надежен. Он даже привносит некоторые тонкости jQuery в структуру.
Еще кое-что: загляните в хранилища данных, они очень полезны и представляют собой гораздо более чистый способ работы с Ajax. В DojoX тоже есть много хороших, просто помните, что DojoX различается тем, насколько хорошо документированы или экспериментальны компоненты. Узнайте о различиях между dojo.byId и dijit.byId
, а также атрибутами HTML id
и jsId
(опять же, в Sitepen есть статья).
dijit.byId
, а также атрибутами HTML id
и jsId
(опять же, в Sitepen есть статья). изучите хранилища данных, они очень полезны и представляют собой гораздо более чистый способ работы с Ajax. В DojoX тоже есть много хороших, просто помните, что DojoX различается тем, насколько хорошо документированы или экспериментальны компоненты. Узнайте о различиях между dojo.byId и dijit.byId
, а также атрибутами HTML id
и jsId
(опять же, в Sitepen есть статья). Пара вещей, которые меня заинтересовали, когда я начал писать виджеты, где:
[Поймите, что dojoAttachPoint, dojoAttachEvent, containerNode и widgitsInTemplate делают] [1]
твердо разбираются в закрытии,
Обращайте внимание на отложенные операции
, понимайте ItemFileReadStore, ItemFileWriteStore и магазины в целом
Вы можете смотреть на магазины как на ResultSet (вроде как), а также можете связывать их данные с виджетами.
Используя эти основные концепции, вы можете начать создавать несколько привлекательных приложений.
Обычно я создаю Фасад JavaScript вокруг моих сервисных вызовов, а затем я скрабирую ответ в хранилище, прикрепив первый обратный вызов в фасаде, который обратный вызов преобразует результаты в хранилище, а затем вернет его. Это позволяет мне не сильно привязывать свои сервисы к конструкциям Dojo (чтобы я мог поддерживать мобильные устройства и т. Д. ), а также перенастраивая данные из фасада в формат, который ожидают виджеты с поддержкой данных.
Также, если вы занимаетесь разработкой Java-сервисов, вы, возможно, захотите изучить JAX-RS. Я начал использовать JSON-RPC, который стал JABS-ORB, но после работы с JAX-RS я предпочел его, поскольку он хорошо интегрируется с JPA-EJB и JAXB.