18 Апреля 23:48
Последние несколько лет Perl стал выходить из спячки, доказательством тому несколько современных и интересных проектов, например Moose и Catalyst, о которых я уже рассказывал. Но трендом последнего года является Mojo в общем и Mojolicious в частности.
Mojolicious Logo

Mojo — это набор элементов для построения веб-приложений или даже веб-фрэймворков, а Mojolicious и есть реализация веб-фрэймворка авторами Mojo.

Теперь посмотрим, что такого нам может дать Mojolicious:
  • Во-первых, это современный MVC фрэймворк для Perl, основанный на многолетнем опыте разработки Catalyst;
  • Отсутствие зависимостей. У Mojo нет зависимостей кроме Perl 5.8.1, а у Mojolicious кроме Mojo;
  • Реализация клиент/сервеных протоколов HTTP 1.1 и WebSockets с поддержкой IPv6, TLS, IDNA и других плюшек;
  • Встроенные веб-сервер с поддержкой prefork(epoll, kqueue), асинхронного ввода-вывода, горячей установки и UNIX domain socket sharing;
  • Поддержка CGI, FastCGI и даже PSGI;
  • Из коробки доступны роуты, плагины, сессии, куки, сервер статики, фрэймворк для тестирования, перловые шаблоны, JSON, I18N, отличная поддержка юникода и многое другое;
Становится очевидно, что Mojolicious вполне достоин того, чтобы его попробовать. Начнем с установки.

Установка

Существует два способа установить Mojolicious. Первый, привычный, через CPAN
sudo cpanp install Mojolicious
Второй, более предпочтительный, из репозитория github:
git clone git://github.com/kraih/mojo.git
cd mojo
perl Makefile.PL
make && make test && sudo make install
Из-за того, что разработка Mojo/Mojolicious идет весьма быстро, вам, скорее всего, придется часто обновлять дистрибуив и ваши приложения. Для CPAN нужно выполнить ту же строчку:
sudo cpanp install Mojolicious
А для обновления git-репозитория:
cd <путь>/mojo
git pull
make clean
perl Makefile.PL
make && make test && sudo make install
Если же вы удалили директорию с репозиторием, то можно просто повторить установку ;)

Первый запуск

В Mojolicious как и в Catalyst, как и в других фрэймворках, предусмотрена генерация каркаса для нового приложения, что позволяет ускорить разработку.
mojolicious generate app MyTest
cd my_test
./script/my_test daemon --reload
Очевидно, что первой строкой мы генерируем каркас, второй переходим в созданную директорию и третьей запускаем тестовый сервер с перезагрузкой при изменении кода.

Структура вполне привычна и понятна. В lib хранится код, в log логи, в public статические файлы которые раздаются отдельным сервером, в script скрипт запуска сервера, в t лежат тесты, а в templates шаблоны.
Сгенерированный проект

В директории lib создаются два файла: первый MyTest.pm в котором есть метод startup, выполняемый единожды при запуске. На картинке видно, что после генерации там настроена маршрутизация на тестовый контроллер example, в котором в шаблон передается приветствие в переменной message.
Контроллер Welcome

В отличии от каталиста, в моджолишиэс не нужно отдельно создавать представление. Более того, при генерации сразу создается обёртка для всего сайта(layouts/default) и шаблон для контроллера example/welcome. И если перейти на стандартный адрес http://localhost:3000, то можно увидеть это приветствие:
Mojolicious Hello World!

На этом можно было бы и закончить, но я хочу показать немного Mojo-магии. Вместе с Mojolicious разрабатывается Mojolicious::Lite, предназначенный в первую очередь для небольших проектов. Для генерации каркаса Mojolicious::Lite нужно немного изменить команду:
mojolicious generate lite_app MLTest
./MLTest daemon --reload
Да-да, создается один файл в котором объединен и код и шаблоны:
Mojolicious::Lite

И который не смотря на это всё, прекрасно работает!
Mojolicious::Lite

Кроме того, в будущем можно легко вынести шаблоны из этого файла одной командой:
./mltest inflate
и продолжить разработку уже только с исходным кодом в этом файле.

Вывод

Mojolicious это современный, быстроразвивающийся фрэймворк. В этом его плюсы и его минусы, так как до версии 1.0 не обещают обратной совместимости. Именно поэтому я бы не советовал применять его в серьезных проектах. Но ведь всегда можно придумать несерьезный и попробовать Mojo!

904 просмотра
нет комментариев
Только зарегистрированные пользователи могут оставлять комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
© sontan.name, 2008–2010