Mojolicious первые шаги. Hello world на Mojolicious!
На , мы установили Perl и наиболее подходящий редактор исходного кода.
Начинается самое интересное!
Сегодня мы установим Mojo, рассмотрим основы работы с ним и напишем «Hello World!».
Прежде чем переходить к установке, посмотрим, что же такое Mojo вообще и для чего он нужен.
Mojo — не просто фреймворк, как например Codeigniter или Kohana для PHP. Mojo — это набор библиотек, для создания своего фреймворка, т.е. фреймворк для фреймворка (как-бы странно это не звучало).
В стандартную поставку Mojo входит два «готовых» фреймворка, которые можно использовать для написания приложения/сайта — Mojolicious и Mojolicious::Lite. C первым из них мы и будем сегодня знакомиться.
Для начала приведу несколько ссылок, где можно почерпнуть полезную информацию о Mojo:
— официальный сайт фреймворка — содержит краткое описание основных возможностей и несколько примеров кода на Mojo.
— основной репозиторий Mojo, если необходима самая свежая версия фреймворка и документации — ищите ее именно тут.
— твиттер автора Mojo — kraih
— файловый движок блога на Mojolicious::Lite — много интересных статей, автор — vti
— блог vti
Из материалов на русском языке, можно отметить следующие ресурсы:
— твиттер Анатлоия Шарифулина — часто пишет на Mojo и о Mojo
— ЖЖ Анатолия — статьи о Mojo и Perl
— презентация Анатолия, однозначно, 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 «:3000».
Предупреждение (warning) «No such signal: SIGWINCH at C:/strawberry/perl/site/lib/Mojo/Server.pm line 92.» появляется только при работе в Windows, в Linux — все прошло гладко.
Открываем браузер, и переходим по адресу :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, рассмотрим основы работы с ним и напишем «Hello World!».
Прежде чем переходить к установке, посмотрим, что же такое Mojo вообще и для чего он нужен.
Mojo — не просто фреймворк, как например Codeigniter или Kohana для PHP. Mojo — это набор библиотек, для создания своего фреймворка, т.е. фреймворк для фреймворка (как-бы странно это не звучало).
В стандартную поставку Mojo входит два «готовых» фреймворка, которые можно использовать для написания приложения/сайта — Mojolicious и Mojolicious::Lite. C первым из них мы и будем сегодня знакомиться.
Для начала приведу несколько ссылок, где можно почерпнуть полезную информацию о Mojo:
— официальный сайт фреймворка — содержит краткое описание основных возможностей и несколько примеров кода на Mojo.
— основной репозиторий Mojo, если необходима самая свежая версия фреймворка и документации — ищите ее именно тут.
— твиттер автора Mojo — kraih
— файловый движок блога на Mojolicious::Lite — много интересных статей, автор — vti
— блог vti
Из материалов на русском языке, можно отметить следующие ресурсы:
— твиттер Анатлоия Шарифулина — часто пишет на Mojo и о Mojo
— ЖЖ Анатолия — статьи о Mojo и Perl
— презентация Анатолия, однозначно, 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 «:3000».
Предупреждение (warning) «No such signal: SIGWINCH at C:/strawberry/perl/site/lib/Mojo/Server.pm line 92.» появляется только при работе в Windows, в Linux — все прошло гладко.
Открываем браузер, и переходим по адресу :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;
-
xoma,
- 28 февраля 2010, 15:58
- рейтинг: +1

- Foxcool
- 01 марта 2010, 07:07
Однозначно, полезная статья. Даже узнал некоторые вещи, о которых не узнал, «обучаясь» сам!
Ну что же вы так, нет конечно, вы не правы. Сравните «все» фреймворки на примере 3х и вы поймёте, что разницы море Ruby on Rails, .Net framework и например для PHP это Recess… идеи вообще и реализация лежат в разных плоскостях!
К сожалению с .Net не работал, но вот взять к примеру Django(Python), Catalyst(Perl) и Yii(PHP) — то между ними очень много всего общего =) Конечно, если брать в расчет детальную реализацию той или иной части\фичи (ну например ORM или система Роутинга) — то имеются отличия =) Я думаю, что если фреймворки реализуют один и тот же шаблон (pattern), а в большинстве случаев это MVC и его вариации — то между ними будет много общего. Все ИМХО, конечно =)

- sharifulin
- 18 мая 2010, 16:27
- ↑
Ну да, берутся лучшие идеи плюс свои и реализуются.
Тем самым Mojolicious (Perl) становится настоящим конкурентом всем остальным фреймворкам :)
Смотрите мою последнюю презентацию, сделанную специально для Devconf 2010 –
Тем самым Mojolicious (Perl) становится настоящим конкурентом всем остальным фреймворкам :)
Смотрите мою последнюю презентацию, сделанную специально для Devconf 2010 –

- SZares
- 12 марта 2010, 00:12
Спасибо, интересно было почитать, но практиковаться — нет… даже не хочу вспоминать кошмары десятилетней давности :)
Далее "… да все фреймворки — по сути одинаковы..." — все да не все.
Пока мы тут занимаемся анализом старого — люди пишут фреймворки нового поколения (под php3+).
Да какие…
Весь фреймворк с системой кеширования и шаблонизатором — один файл в 40KB, а сайты на нем, просто не то слово — летают.
Настоятельно рекомендую:
Далее "… да все фреймворки — по сути одинаковы..." — все да не все.
Пока мы тут занимаемся анализом старого — люди пишут фреймворки нового поколения (под php3+).
Да какие…
Весь фреймворк с системой кеширования и шаблонизатором — один файл в 40KB, а сайты на нем, просто не то слово — летают.
Настоятельно рекомендую:

- sharifulin
- 18 мая 2010, 16:29
- ↑
Не хотите, не надо :)
Посмотрите презентацию и все станет на свои места (как раз про 10 лет там первые три слайда :)
Посмотрите презентацию и все станет на свои места (как раз про 10 лет там первые три слайда :)
Анатолий, спасибо за презентацию — это не только ностальгично, но иногда и полезно, в качестве мозговой встряски.
За последнее время все так далеко шагнуло…
Думаю, я пересмотрю свое отношение ко всему происходящему.
Уж во всяком случае — разработку сложных веб-приложений нужно будет перевести на рельсы Perl.
За последнее время все так далеко шагнуло…
Думаю, я пересмотрю свое отношение ко всему происходящему.
Уж во всяком случае — разработку сложных веб-приложений нужно будет перевести на рельсы Perl.
Комментарии (11) свернуть | развернуть