Реклама

Настроить
 
 

Groovy on Grails  

25 Февраль @ 15:36
Я уже недавно писал про Java-безумие.

Окончательно устав трахаться с крутыми тырпрайз-технологиями, мы приняли важное решение: начали всё заново на Груви он Грейлс: основанной на всё тех же технологиях среде, однако позволяющей не писать всё по стопицот раз.

Очень круто. Я написал работающий простенький инет-магаз за пару вечеров.

Что есть:
Абсолютно автоматическая ORM
Создаются домейн классы, в которых просто обозначаются поля и связи.
Например:

class ShopUser {

static constraints = {
orders()
}

static hasMany = [orders:ShopOrder]
static optionals = ['name', 'lname', 'adr', 'orders']

String login

String name
String lname
String adr

String toString() {
login
}
}

Всё! Для домейн класса автоматом генерятся не только геттеры и сеттеры, но и статические методы findBy*, например findByLoginAndId(), а так же методы для работы с коллекциями типа addToOrders()

Модель MVC. Домейн классы, контроллеры, визуализация. Вот один из контроллеров:

class HomepageController {

def index = {
redirect(action:'list')
}

def list = {
def authenticationService
def data = [
positions: Book.list(max:20)
]
}

def show = {
[ bookInstance: Book.get(params.id) ]
}
}

А вот соответствующий list view:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="layout" content="bookshop" />
        <title>Книжный магазин</title>
    </head>
    <body>
     <h1>В продаже:</h1>
     <div class="mainlist">
        <g:each in="${positions}" var="book">
            <div class="list-item">
             <div class="rightpane">
                <p class="price">${book.price} руб.</p>
                <g:link class="btn" controller="personal" action="addtocart" params="[back:'list']" id="${book.id}">Купить!</g:link>
             </div>
             <h4>${book.name}</h4>
             <h5>${book.author}</h5>
             <p class="meta">Вес: ${book.weight} кг.</p>
             <div class="clear"></div>
            </div>
        </g:each>
     </div>
    </body>
</html>

* This source code was highlighted with Source Code Highlighter.


С тем же успехом можно было обратится к модели прямо из view: <g:each in="${Book.list(max:20)}" var="book">

При этом <meta name="layout" content="bookshop" /> объединяет эту страничку с реальным макетом. Можно создавать собственные таги, например <ifEmptyCart>

Плагины. Добавляют в проект готовые контроллеры, домейн классы, вьюсы, теги и прочее. Плагин авторизации, плагин корзины например.

Не без недостатков: молодая, сырая вещь. Очень слабое коммьюнити. Ужасная интеграция с нетбинсами. Сложности отладки: сыпет в консоль два экрана стек трейса исключений, и разбирайся как хочешь.

А главный недостаток в том, что она основана на этой ебучей яве.

Вывод. Мило, наверное будем делать из нашего проекта курсовик на нём же. Хочу ознакомиться с более популярным рубинарейлс. Возможно, он ещё круче.
 
 
Местоположение: в комповнике
( 16 комментариев — Post a new comment )
Рыжий циник[info]bert_msk on Февраль, 25, 2009 13:27 (UTC)
Боже какое говнище. Чё бы не написать на пхп и не трахать себе мозг?
artyfarty[info]arty_ru on Февраль, 25, 2009 13:36 (UTC)
было требование писать на яве
Красные Кнопочки[info]red_buttons on Февраль, 25, 2009 15:08 (UTC)
Или дельфи, ага.
бесстыжий плагиатор[info]sonozaki_mion on Февраль, 25, 2009 13:48 (UTC)
руби на рельсах - это как пхп для идиотов.
в плане понятности, я имею в виду.
artyfarty[info]arty_ru on Февраль, 25, 2009 13:51 (UTC)
я сейчас не говорю о том что прогать теперь может каждый идиот.

А вообще, рейл-платформы хороши тем что лучше заточены под разработку сайтов. Разрабатывать быстрее, ошибок меньше. Плохо разьве?
ಠ_ಠ[info]biolante on Февраль, 25, 2009 14:15 (UTC)
Может. Но хуево :)
artyfarty[info]arty_ru on Февраль, 25, 2009 14:17 (UTC)
Само собой.
Просто обсуждение того какие нынешние языки и среды другие, тру это или не тру, тормозит ли или нет, какие из кодеров быдло и прочее — это очень длинный разговор. Пост не об этом.
ಠ_ಠ[info]biolante on Февраль, 25, 2009 14:21 (UTC)
Эм... о наличии MVC фреймворка под яву? Так они под любой язык ща есть. К пыхпыху вообще штук 20-30.
artyfarty[info]arty_ru on Февраль, 25, 2009 14:33 (UTC)
знаю

покажи какой-нить покрасивше, кстати, если смотрел
ಠ_ಠ[info]biolante on Февраль, 25, 2009 14:36 (UTC)
Под пых? Symfony
v3[info]v3_varyen on Февраль, 25, 2009 19:46 (UTC)
Кодеигнитер
artyfarty[info]arty_ru on Февраль, 25, 2009 14:35 (UTC)
Ну да, есть. Надо же написать в интернеты о фреймворке, с которым потел неска дней...

И да, это первый мвц-фреймворк, с к которым я сталкиваюсь, надо же поохуевать.
ಠ_ಠ[info]biolante on Февраль, 25, 2009 14:37 (UTC)
Ну я тож поохуевал. Потом правда понял, что не совсем тривиальные вещи в них решаюца эм... сложненько.
artyfarty[info]arty_ru on Февраль, 25, 2009 14:42 (UTC)
я так и подозреваю. Но кто знает, может когда-нибудь всё будет лучше..
igorekk[info]igorekk on Февраль, 25, 2009 15:24 (UTC)
Почему Руби, а не Джанга? :)
Blaze[info]blaze_solo on Февраль, 25, 2009 19:00 (UTC)
Ну а что, груви вполне неплохая попытка подняться еще на уровень выше
 
 

Реклама

Настроить