Вот несколько примеров, но имейте в виду, что они довольно тривиальны и на самом деле не показывают вам, как система работает вместе. Одна из сильных сторон Grails заключается в том, что различные части объединяются для уменьшения сложности кода и ускорения разработки. Я рекомендую сделать один проект среднего размера (например, программное обеспечение для ведения блога или фотогалерею), который заставит вас прикасаться практически ко всему. В настоящее время я работаю над приложением для управления билетами, и мне пришлось изучить практически все в рамках. На самом деле материала не так уж и много.
При этом, вот мой список «обязательных для изучения» вместе с некоторыми примерами:
Groovy, особенно замыкания, карты и свойства. Если вы пришли с Java, замыкания поначалу могут показаться немного странными. Однако, как только вы освоите их, будет трудно вернуться к языку, в котором они не используются. Карты и свойства используют идеи, которые могут быть знакомы, но синтаксис и использование достаточно отличаются, поэтому их стоит внимательно изучить. Grails использует эти три вещи ВСЕ ВРЕМЯ во всей структуре. В качестве хорошего примера изучите «BeanBuilder», который создает экземпляры компонентов Spring, определенных в resources.groovy. Кроме того, просмотрите документацию по Groovy на сайте groovy.codehaus.org. Пара часов сэкономит вам ДНИ в пути.
Программирование MVC. Модель «MVC» в Grails очень похожа на модель, используемую в Rails, но существенно отличается от модели «MVC», используемой в настольных Java-приложениях. По сути, все входящие запросы URL представляют собой сообщение контроллеру, который возвращает представление. Объекты домена — это данные, которые вы хотите хранить, просматривать и манипулировать с помощью представлений и контроллеров. Сделайте форму ввода, которая проверяет ввод пользователя с помощью ограничений, а затем каким-то образом манипулирует им с помощью контроллера. Что-то вроде страницы, которая принимает ваш день рождения и возвращает ваш знак зодиака и животное китайского зодиака. Посмотрите, сможете ли вы заставить его возвращать пользователю ошибки при неверном вводе.
ГОРМ. GORM очень важен, но вам придется изучать его практически в любом проекте, который вы выберете. Просмотрите документацию, чтобы знать, каковы ее возможности.
Фильтры и услуги. Это "способ Грааля" для СУХОГО программирования. Аутентификация — это канонический пример, и он идеально подходит для изучения фильтров. Для услуг напишите что-нибудь, что отправит электронное письмо. На веб-сайте Grails есть отличный пример простой службы электронной почты.
Страницы сервера Groovy. Если вы раньше работали с шаблонизатором, то это должно показаться вам знакомым. Познакомьтесь с библиотекой тегов GSP, это очень поможет. Практические примеры включают: практически все. Каждому приложению нужен интерфейс. Попробуй сделать красиво. ПРИМЕЧАНИЕ. Это приводит ко многим вещам, не относящимся к Grails, таким как JavaScript, CSS и т. д. Если у вас уже нет этих знаний, приготовьтесь к некоторому обучению.
Ваш каталог «conf». Изучите каждый файл, особенно UrlMappings.groovy. Поэкспериментируйте с UrlMappings, чтобы у вас было приложение, которое получает значимую информацию из URL-адреса. Что-то вроде /myapp/calculate/36/times/145, где приложение возвращает ответ.
Я бы сказал, что это основы, но есть много других тем, таких как веб-потоки, i18n, тестирование, обработка сеансов и так далее. Лучший способ изучить их — создать проект приличного размера. Делая это, вы, вероятно, поймаете себя на мысли: «Боже, я бы хотел, чтобы Grails сделал ____». Прочтите прекрасную документацию на Grails.org, и вы, вероятно, найдете встроенную возможность или подключаемый модуль, который делает то, что вам нужно. Справочный PDF-файл живет на моем рабочем столе, и я нашел его неоценимым во время моего обучения.
О, и посмотрите на код шаблона, который генерирует Grails. Вы, вероятно, в конечном итоге расскажете все это, но это даст вам хорошее представление о том, как работает система.
Получайте удовольствие и счастливого взлома!
person
Megaduck
schedule
07.02.2009