18 Апреля 23:48

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. Первый, привычный, через CPANsudo 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.

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

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

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