Я уже недавно писал про Java-безумие.
Окончательно устав трахаться с крутыми тырпрайз-технологиями, мы приняли важное решение: начали всё заново на Груви он Грейлс: основанной на всё тех же технологиях среде, однако позволяющей не писать всё по стопицот раз.
Очень круто. Я написал работающий простенький инет-магаз за пару вечеров.
Что есть:
Абсолютно автоматическая ORM
Создаются домейн классы, в которых просто обозначаются поля и связи.
Например:
Всё! Для домейн класса автоматом генерятся не только геттеры и сеттеры, но и статические методы findBy*, например findByLoginAndId(), а так же методы для работы с коллекциями типа addToOrders()
Модель MVC. Домейн классы, контроллеры, визуализация. Вот один из контроллеров:
А вот соответствующий list view:
С тем же успехом можно было обратится к модели прямо из view: <g:each in="${Book.list(max:20)}" var="book">
При этом <meta name="layout" content="bookshop" /> объединяет эту страничку с реальным макетом. Можно создавать собственные таги, например <ifEmptyCart>
Плагины. Добавляют в проект готовые контроллеры, домейн классы, вьюсы, теги и прочее. Плагин авторизации, плагин корзины например.
Не без недостатков: молодая, сырая вещь. Очень слабое коммьюнити. Ужасная интеграция с нетбинсами. Сложности отладки: сыпет в консоль два экрана стек трейса исключений, и разбирайся как хочешь.
А главный недостаток в том, что она основана на этой ебучей яве.
Вывод. Мило, наверное будем делать из нашего проекта курсовик на нём же. Хочу ознакомиться с более популярным рубинарейлс. Возможно, он ещё круче.
Окончательно устав трахаться с крутыми тырпрайз-технологиями, мы приняли важное решение: начали всё заново на Груви он Грейлс: основанной на всё тех же технологиях среде, однако позволяющей не писать всё по стопицот раз.
Очень круто. Я написал работающий простенький инет-магаз за пару вечеров.
Что есть:
Абсолютно автоматическая 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 комментариев