Персональный блог Игоря Антонова aka "spider_net"

Revel – MVC фреймворк для Go


Рубрика: Программирование -> go
Метки: | | |
Просмотров: 9338
Revel – MVC фреймворк для Go

Без фреймворка в наше время обойтись трудно и если для языков вроде PHP их уже создан целый вагон, то здоровяк Go, в силу своей молодости, долго был белой вороной. Ситуация изменилась, когда сообщество собралось с силами и портировало известный каждому Java и Scala разработчику фреймворка Play! (http://goo.gl/qVuKi). Так на свет появился проект Revel, позволяющий каждому Go разработчику не кисло сэкономить время и нервы во время создания очередного шедевра.

Установка Revel

Актуальную версию Revel всегда можно взять с официального git-репозитория (http://goo.gl/wVvRL). Проще всего воспользоваться командной строкой (у меня это bash):

go get https://github.com/robfig/revel

После установки необходимо подготовить Revel для использования из командной строки:

go build -o bin/revel github.com/robfig/revel/cmd
export PATH="$PATH:$GOPATH/bin"
echo 'PATH="$PATH:$GOPATH/bin"’ >> .base_profile

Этих телодвижений достаточно чтобы Revel надолго поселился в системе и был готов к великим свершениям. Перед созданием тестового приложения убедимся, что установка и настройка прошла корректно. Попробуем вызвать справку:

revel help

Если в ответ на команду ты получишь справочную информацию, а не кучу ерров со скромным намеком «неизвестная команда», то значит, установка действительно прошла успешно. В случае возникновения ошибок рекомендую попробовать все повторить вновь и попутно заглянуть в официальную документацию. Быть может для твоей системы потребуется выполнить пару дополнительных твиков.

I am revel, you are Go!

Попробуем протестировать revel в бою – создадим демонстрационное приложение. Открываем терминал и вводим команду:

cd $GOPATH #переходим в рабочую директорию;
revel new src/myfirstapp #создаем новый проект с именем myfirstapp

Результатом выполнения команды станет создание нового проекта в отдельной директории (myfirstapp). Чистый проект готов и его можно прямо сейчас протестировать:

revel run myfirstapp

После выполнения команды открывай браузер и попробуй обратиться к созданному приложению. У меня оно висит на 9000 порту. Вбиваем localhost:9000 и в случае успеха наблюдаем многообещающую надпись: “Your Application Is Ready”.

Revel для Go

Структура проекта

Имея опыт работы с несколькими популярными php-фреймворками, я сразу отметил удачную структуру проекта. Все разложено по полочкам, и добраться до каждой сущности не составит большего труда. Да что говорить, взгляни сам:

myfirstapp
app
controllers – контроллеры;
models - модели;
views - представления;
tests – тесты;
conf – конфигурационные файлы проекта;
- app.conf – главный конфигурационный фйайл;
- routes – маршруты;
public
- css – файлы с css;
- js – сценарии JavaScript;
- Images – картинки;

Горячая компиляция

Ты прекрасно знаешь, что Go – прежде всего компилируемый язык, а значит, после внесения очередных изменений в код требуется выполнить компиляцию приложения. Тебя приятно удивит, что при работе с Revel это задача частично автоматизируется. Все дело в том, что фреймворк держит под пристальным контролем определенные директории проекта (речь идет о папке app, views и т.д.) и внимательно следит за происходящими в ней изменениями. Стоит добавить туда новый файл (например, новый контроллер) или отредактировать существующий, как revel незаметно для тебя перекомпилирует приложение, и ты сможешь сразу же оценить результат внесенных правок. Во время отладки или тестирования приложения данный функционал весьма удобен.

Быть или не быть

Язык Go и фреймворк Revel достигли уровня продакшн-инструментов и обороты сбавлять не собираются. У обоих проектов сильные сообщества и приличный набор вспомогательных инструментов. Конечно, Go – это не затычка на все случаи жизни, и не серебряная пуля, способная избавить от всех бед. Это хороший инструмент, способный сослужить хорошую службу, если Node.JS (connects.js + express.js), Erlang, Python и другие проверенные временем инструменты тебе не подошли или ты просто хочешь перейти на новый уровень, воспользовавшись свежим решением.

Аргументы «за»:

- Мощь компилируемого и строго типизированного языка;

- Есть все необходимое для разработки web-приложений;

- Шикарная производительность;

- Хорошая документация;

Оставьте комментарий!
comments powered by HyperComments