На зорі розвитку всесвітньої павутини, багато людей вивчали Perl тому, що існувала прекрасна бібліотека Perl, звана CGI. Вона була досить проста, щоб почати роботу без особливого знання мови і досить потужна, щоб із захопленням продовжувати вивчати мову. Хоча більшість використовуваних нею методів в даний час застаріло, сама ідея залишається актуальною. Mojolicious - нова спроба реалізації цієї ідеї c використанням передових технологій.
Чудовий веб-фреймворк MVC дозволяє написати повноцінне додаток в одному файлі за допомогою Mojolicious :: Lite.
Потужні можливості прямо з коробки: маршрути RESTful, розширення, шаблонізаціі в стилі Perl, управління сеансом, підписані cookies, тестіровочного фреймворк, сервер статичних файлів (static file server), I18N, першокласна підтримка Юнікоду і багато іншого!
Дуже чистий, портіруемость і об'єктно-орієнтована Perl API без будь-якої прихованої магії і вимог, крім Perl 5.8.7. (Хоча рекомендуються версії 5.12+)
Повна підтримка HTTP 1.1 і клієнт / серверна реалізація WebSocket з IPv6, TLS, Bonjour, Comet (довгі опитування (анг. Long polling)), підтримка chunking і multipart.
Вбудований неблокірующій веб-сервер (анг. Non-blicking I / O web server) з підтримкою libev і "гарячої" розгортки - прекрасно підходять для вбудовування!
Автоматичне визначення CGI, FastCGI і PSGI.
JSON і HTML5 / XML парсер з підтримкою CSS3-селектор.
Свіжий код, заснований на багаторічному досвіді розробки Catalyst.
Все що потрібно, це одна строчка, це займає менше хвилини.
Ці три рядки утворюють цілісне веб-додаток.
Щоб запустити цей приклад з вбудованим development веб-сервером, просто вставте код в файл і виконайте його з morbo.
Веб-розробка для людей, що робить складні речі можливими, а саму розробку приємною.
Прості прототипи файлів можуть легко перерости в добре структуровані програми. Контролер збирає кілька окремих операцій разом.
Поки клас додатки є унікальним, ви можете мати стільки контролерів, скільки вам хочеться.
Великі додатки отримують перевагу від поділу дій від маршрутів, особливо при роботі в команді.
Через всі ці зміни, ваш код операції та шаблони можуть залишатися майже тими ж самими.
Mojolicious був розроблений з нуля для зручного і унікального робочого процесу
Погляньте на нашу відмінну документацію Mojolicious :: Guides!
Слабо пов'язані функціональні блоки, використовуйте ті, що вам подобаються і просто не звертайте уваги на інші.
Mojolicious успадковує всі атрибути з Mojo і реалізує наступні.
Клас який буде використовуватися в якості контролера, за замовчуванням використовується Mojolicious :: Controller.
Режим роботи для вашого застосування, за замовчуванням використовується значення змінної оточення MOJO_MODE або development. Ви можете також додати режим логіки додатка, визначаючи методи з ім'ям $ mode_mode в класі програми, які будуть викликатися до спрацьовування startup.
Прямо перед викликом startup і специфічними методами режиму, Mojolicious буде перехоплювати поточний режим, ім'я файлу лога після нього і піднімати рівень балки з debug в info. якщо він має значення, відмінне від development.
Функція зворотного виклику, обробна запити, за замовчуванням викликає метод dispatch. Зазвичай ви будете використовувати плагін або контролер замість нього, розглядайте його як лом в вашому наборі інструментів.
Завантажувач плагіна за замовчуванням - об'єкт Mojolicious :: Plugins. Зазвичай ви можете залишити все як є, см. Mojolicious :: Plugin. якщо хочете написати плагін.
Використовується для візуалізації контенту, за замовчуванням Mojolicious :: Render. Два основних плагіна візуалізації Mojolicious :: Plugin :: EpRenderer і Mojolicious :: Plugin :: EplRenderer містять більш детальну інформацію.
Диспетчер маршрутів, за замовчуванням Mojolicious :: Routes. Ви використовуєте його в стартовому методі для визначення кінцевих точок url (анг. Url endpoints) для вашого застосування.
Секретний пароль, який використовується для підписаних cookies і т.п. за замовчуванням - назва програми, що не дуже надійно, тому ви повинні змінити його. До тих пір, поки ви будете використовувати значення за замовчуванням, в лог файл будуть писатися налагоджувальні повідомлення з нагадуванням про зміну пароля.
Прості підписані cookies засновані на сесіях, за замовчуванням використовується об'єкт Mojolicious :: Sessions.
Для обслуговування статичних ресурсів з каталогу public. за замовчуванням Mojolicious :: Static.
Відповідає за підключень розширень файлів з MIME-типи, за замовчуванням Mojolicious :: Types.
Mojolicious успадковує всі методи від Mojo і реалізує наступні нові.
Створює новий додаток Mojolicious. Автоматично визначає ваш домашній каталог і встановлює логирование, грунтуючись на вашому поточному режимі роботи. Крім того, встановлюється маршрутизація, статична диспетчеризація і стандартний набір плагінів.
Значення за замовчуванням для stash, призначений для кожного нового запиту.
Серце кожної програми Mojolicious, викликає диспетчери статичних файлів і маршрутів для кожного запиту, і перенаправляє їх об'єкту Mojolicious :: Controller.
Встановлює контролер за замовчуванням і викликає процес для кожного запиту.
Додавання нового хелпера, який буде доступний як метод об'єкта контролера і об'єкта додатка, а також функцій в шаблонах ep.
Розширення Mojolicious додаванням хуков для іменованих подій.
В наявності є таке події, виконуються в зазначеному порядку.
Спрацьовує після створення транзакції і до отримання обробленого HTTP. Зворотні виклики цього хука запускаються в тому порядку, в якому вони створені. Один з варіантів використання може бути індикатор прогресу завантаження. (Бере транзакцію і екземпляр додатку)
Запускається до спрацьовування диспетчера статики і маршрутизації, зворотні виклики цих хуков виконуються в порядку їх створення. Дуже корисний для модифікації вхідних запитів і інших задач попередньої обробки. (Бере екземпляр контролера за замовчуванням)
Спрацьовує після диспетчера статики, який визначає, чи повинен бути поданий статичний файл, і до запуску диспетчера маршрутів, зворотні виклики цього хука працюють в зворотному порядку. В основному використовується для призначених для користувача диспетчерів і постобробки відповідей статичних файлів. (Бере екземпляр контролера за замовчуванням)
Спрацьовує перед тим як рендерер вносить stash дані у відповідь, зворотні виклики цього хука виконуються в порядку, в якому вони були додані. Дуже корисний для внесення коректив в stash до рендеринга. (Бере екземпляр поточного контролера і посилання на хеш з аргументами)
Зверніть увагу, що цей хук є ЕКСПЕРИМЕНТАЛЬНИМ і може змінитися без попередження!
Запущені після відповіді, який був наданий, функції зворотного виклику цього хука виконуються в зворотному порядку. Відзначимо, що цей хук може запускатися до after_static_dispatch через його динамічного характеру. Корисний для всіх видів обробки поста завдань. (Бере екземпляр поточного контролера)
Такий модуль включені в дистрибутив Mojolicious як приклади.
Універсальне умова маршруту для довільних зворотних викликів.
Зміна кодування програми.
Файли в стилі Perl.
Колекція універсальних хелпери.
Рендерер для простих вбудованих шаблонів Perl.
Рендерер для більш витончених вбудованих шаблонів Perl.
Режим маршруту для всіх видів заголовків.
Файли конфігурації в форматі JSON
Mount whole Mojolicious applications.
Рендерер для файлів в форматі POD і браузера документації.
Додавання заголовків X - Powered - By в вихідні відповіді.
Логування інформації про час.
Колекція хелпери для шаблонізаціі.
Запускає інтерфейс командного рядка Mojolicious :: Commands для вашого застосування.
Це ваша основна точка входу в додатку, метод буде викликатися при запуску.
In addition to the attributes and methods above you can also call helpers on instances of Mojolicious. This includes all helpers from Mojolicious :: Plugin :: DefaultHelpers and Mojolicious :: Plugin :: TagHelpers.
Mojolicious поставляється з декількома популярними статичними файлами в комплекті в каталозі public.
Кожен основний випуск Mojolicious має кодову назву, тут вказані ті, які використовувалися раніше.
1.4, Smiling Face With Sunglasses (u1F60E)
1.3, Tropical Drink (u1F379)
1.1, Smiling Cat Face With Heart - Shaped Eyes (u1F63B)
1.0, Snowflake (u2744)
0.999930, Hot Beverage (u2615)
0.999927, Comet (u2604)
0.999920, Snowman (u2603)
Sebastian Riedel, sri @cpan. org.
Вибули з основної команди, ми гаряче дякуємо Вам за Вашу працю.
Viacheslav Tykhanovskyi, vti @cpan. org.