Mojolicious первые шаги. Hello world на Mojolicious!

Mojolicious 28 февраля 2010 г., 18:58

На прошлом уроке, мы установили Perl и наиболее подходящий редактор исходного кода.

Начинается самое интересное!

Сегодня мы установим Mojo, рассмотрим основы работы с ним и напишем «Hello World!».

Прежде чем переходить к установке, посмотрим, что же такое Mojo вообще и для чего он нужен.
Mojo — не просто фреймворк, как например Codeigniter или Kohana для PHP. Mojo — это набор библиотек, для создания своего фреймворка, т.е. фреймворк для фреймворка (как-бы странно это не звучало).
В стандартную поставку Mojo входит два «готовых» фреймворка, которые можно использовать для написания приложения/сайта — Mojolicious и Mojolicious::Lite. C первым из них мы и будем сегодня знакомиться.

Для начала приведу несколько ссылок, где можно почерпнуть полезную информацию о Mojo:

mojolicious.org/ — официальный сайт фреймворка — содержит краткое описание основных возможностей и несколько примеров кода на Mojo.

github.com/kraih/mojo — основной репозиторий Mojo, если необходима самая свежая версия фреймворка и документации — ищите ее именно тут.

twitter.com/kraih — твиттер автора Mojo — kraih

getbootylicious.org/ — файловый движок блога на Mojolicious::Lite — много интересных статей, автор — vti

vti.showmetheco.de/ — блог vti

Из материалов на русском языке, можно отметить следующие ресурсы:

twitter.com/sharifulin — твиттер Анатлоия Шарифулина — часто пишет на Mojo и о Mojo

sharifulin.livejournal.com/ — ЖЖ Анатолия — статьи о Mojo и Perl

www.slideshare.net/sharifulin/mojolicious — презентация Анатолия, однозначно, must view

Установка Mojo.

Для установки Mojo, необходимо запустить окно терминала — cmd.exe (напомню, что я работаю в Windows Vista). В открывшемся окне вводим команду:

cpanp install Mojo

После этого получим вывод некоторой информации, нас будет интересовать окончание, имеющее примерно следующий вид:

Module 'Mojo' installed successfully
No errors installing all modules


Если Вы это получили — значит Mojo установлен и готов к использованию.
Вот так вот все просто!

И так, теперь мы имеем все что необходимо:
— интерпретатор Perl
— редактор исходного кода
— установленный фреймворк Mojo

Как можно заменить, мы не устанавливали никакого Web-сервера (Apache и т.д.), в этом просто нет необходимости, так как Mojo включает в себя сервер, который прекрасно подходит для разработки.

Как и все современные фреймвокри, Mojo имеет командный интерфейс (его иногда называют «кодо-генератором») для выполнения таких задач как:
— генерация структуры каталогов нового проекта
— запуск автоматических тестов
— запуск девелопер-сервера

Для начала нам необходимо создать новый проект. Для этого в составе Mojoliciuos есть очень удобная команда «generate app». И так, переходим в каталог, где будут располагаться наши Mojo проекты, запускаем терминал (cmd.exe) и вводим следующую команду:

mojolicious generate app HelloMojo

В данной команде «HelloMojo» — название нашего нового приложения, можно заменить его, скажем на «MyFirstMojoApp» или что-то подобное.

В результате выполнения этой команды получим, примерно следующий вывод:

[mkdir] C:\mojoApps\hello_mojo\script
[write] C:\mojoApps\hello_mojo\script\hello_mojo
[chmod] hello_mojo/script/hello_mojo 744
[mkdir] C:\mojoApps\hello_mojo\lib
[write] C:\mojoApps\hello_mojo\lib\HelloMojo.pm
[mkdir] C:\mojoApps\hello_mojo\lib\HelloMojo
[write] C:\mojoApps\hello_mojo\lib\HelloMojo\Example.pm
[mkdir] C:\mojoApps\hello_mojo\t
[write] C:\mojoApps\hello_mojo\t\basic.t
[mkdir] C:\mojoApps\hello_mojo\log
[mkdir] C:\mojoApps\hello_mojo\public
[write] C:\mojoApps\hello_mojo\public\index.html
[mkdir] C:\mojoApps\hello_mojo\templates
[write] C:\mojoApps\hello_mojo\templates\not_found.html.ep
[exist] C:\mojoApps\hello_mojo\templates
[write] C:\mojoApps\hello_mojo\templates\exception.html.ep
[mkdir] C:\mojoApps\hello_mojo\templates\layouts
[write] C:\mojoApps\hello_mojo\templates\layouts\default.html.ep
[mkdir] C:\mojoApps\hello_mojo\templates\example
[write] C:\mojoApps\hello_mojo\templates\example\welcome.html.ep


Теперь мы можем запустить наш девелопмент-сервер и удостоверится, что все работает.
Для этого переходим в каталог с нашим новым Mojolicious-проектом и выполняем следующую команду:

perl script\hello_mojo daemon --reload

Параметр "--reload" сообщает приложению, что необходимо автоматически перезагрузить исходный код, при его изменении, т.е. нет необходимости перезапускать web-сервер после внесения каких-либо изменений в код.

В результате выполнения, получим следующий вывод:

No such signal: SIGWINCH at C:/strawberry/perl/site/lib/Mojo/Server.pm line 92.
Server available at «localhost:3000».


Предупреждение (warning) «No such signal: SIGWINCH at C:/strawberry/perl/site/lib/Mojo/Server.pm line 92.» появляется только при работе в Windows, в Linux — все прошло гладко.

Открываем браузер, и переходим по адресу localhost:3000/example/welcome/, если все хорошо, мы должны увидеть приветственное сообщение Mojo:

Welcome to the Mojolicious Web Framework!

This page was generated from the template «templates/example/welcome.html.ep» and the layout «templates/layouts/default.html.ep», click here to reload the page or here to move forward to a static page.

Если это произошло — можно вздохнуть с облегчением и двигаться дальше =)

Структура нашего проекта имеет следующий вид:


Кратко рассмотрим назначение основных каталогов:
lib — содержит библиотеки (контроллеры и сторонние модули) необходимые приложению
log — содержит файлы журналов (лог-файлы)
public — содержит «статические» файлы, такие как css, js, html
script — содержит один единственный файл для взаимодействия с текущим Mojolicious-проектом
t — всем, наверное, понятно… каталог содержит автоматические тесты
templates — файлы шаблонов (представления в терминах MVC)

И так. Что мы уже сделали:
— установили фреймворк Mojo
— создали новый проект
— запустили сервер разработки
— убедились, что все работает
— очень кратко рассмотрели структуру проекта

На сегодня это все!

Следующая статья будет о том, что такое MVC и как этот шаблон реализуется в Mojolicious!

use Perl or die;

Теги: Mojo Mojolicious Perl xoma 3


Комментарии 9

MpaK
MpaK
Что-то сильно уши торчат от заимствовани у RoR :))
xoma
xoma
да все фреймворки — по сути одинаковы =)
MpaK
MpaK
Ну что же вы так, нет конечно, вы не правы. Сравните «все» фреймворки на примере 3х и вы поймёте, что разницы море Ruby on Rails, .Net framework и например для PHP это Recess… идеи вообще и реализация лежат в разных плоскостях!
xoma
xoma
К сожалению с .Net не работал, но вот взять к примеру Django(Python), Catalyst(Perl) и Yii(PHP) — то между ними очень много всего общего =) Конечно, если брать в расчет детальную реализацию той или иной части\фичи (ну например ORM или система Роутинга) — то имеются отличия =) Я думаю, что если фреймворки реализуют один и тот же шаблон (pattern), а в большинстве случаев это MVC и его вариации — то между ними будет много общего. Все ИМХО, конечно =)
sharifulin
sharifulin
Ну да, берутся лучшие идеи плюс свои и реализуются. Тем самым Mojolicious (Perl) становится настоящим конкурентом всем остальным фреймворкам :) Смотрите мою последнюю презентацию, сделанную специально для Devconf 2010 – http://www.slideshare.net/sharifulin/mojolicious-4137390
SZares
SZares
Спасибо, интересно было почитать, но практиковаться — нет… даже не хочу вспоминать кошмары десятилетней давности :) Далее "… да все фреймворки — по сути одинаковы..." — все да не все. Пока мы тут занимаемся анализом старого — люди пишут фреймворки нового поколения (под php3+). Да какие… Весь фреймворк с системой кеширования и шаблонизатором — один файл в 40KB, а сайты на нем, просто не то слово — летают. Настоятельно рекомендую: PHP Fat-Free Framework
xoma
xoma
Спасибо за ссылку — обязательно посмотрю! "… не хочу вспоминать кошмары десятилетней давности" — а мне напротив, очень нравится Perl и нравится писать на нем так, как позволяет это делать Mojo =) Тут как говориться «на вкус и цвет...»
sharifulin
sharifulin
Не хотите, не надо :) Посмотрите презентацию и все станет на свои места www.slideshare.net/sharifulin/mojolicious-4137390 (как раз про 10 лет там первые три слайда :)
SZares
SZares
Анатолий, спасибо за презентацию — это не только ностальгично, но иногда и полезно, в качестве мозговой встряски. За последнее время все так далеко шагнуло… Думаю, я пересмотрю свое отношение ко всему происходящему. Уж во всяком случае — разработку сложных веб-приложений нужно будет перевести на рельсы Perl.
Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!