Mojolicious — веб в коробке! =head1 ИМЯ Mojolicious — веб в коробке! =head1 ОБЗОР # Приложение Mojolicious package MyApp; use base 'Mojolicious'; sub startup { my $self = shift; # Routes my $r = $self->rout # Default route $r->route('/:controller/:action/:id')->to('foo#welcome'); } # Контроллер Mojolicious package MyApp::Foo; use base 'Mojolicious::Controller'; # Say hello sub welcome { my $self = shift; $self->render_text('Hi there!'); } # Say goodbye from a template (foo/bye.html.ep) sub bye { shift->render } =head1 ОПИСАНИЕ На заре развития всемирной паутины существовала прекрасная библиотека Perl, называемая C; многие люди изучали Perl только из-за неё. Она была достаточно проста, чтобы начать работу без особого знания языка и достаточно мощна, чтобы с увлечением продолжать изучать язык. Хотя большинство используемых ею методов в настоящее время устарело, сама идея остается актуальной. C — новая попытка реализации этой идеи c использованием передовых технологий. =head2 Возможности =over 4 Великолепный веб-фреймворк MVC позволяет написать полноценное приложение в одном файле с помощью L. Очень чистый, портируемый и объектно-ориентированный Perl API без какой-либо скрытой магии и требований, кроме Perl 5.8.7. Полная поддержка HTTP 1.1 и клиент/серверная реализация WebSocket с IPv6, TLS, IDNA, конвейеров, поддержка chunking и multipart. Встроенный асинхронный ввод-вывод, prefork-вебсервер с поддержкой epoll и kqueue, "горячая" развёртка и использование доменного сокета UNIX (анг. Unix domain socket sharing) — прекрасно подходит для встраивания! Поддержка CGI, FastCGI и L. Свежий код, основанный на многолетнем опыте разработки Catalyst. Мощные возможности прямо из коробки: роуты RESTful, плагины, сессии, подписанные cookies, сервер статических файлов (static file server), тестировочный фреймворк, шаблонизация в стиле Perl, JSON, I18N, первоклассная поддержка Юникода и многое другое! =back =head2 Липкая лента для HTML5 Веб-разработка для людей, делающая сложные вещи возможными, а саму разработку приятной. use Mojolicious::Lite; get '/hello' => sub { shift->render(text => 'Hello World!') } get '/time' => 'clock'; websocket '/echo' => sub { my $self = shift; $self->receive_message( sub { my ($self, $message) = @_; $self->send_message("echo: $message"); } ); }; get '/title' => sub { my $self = shift; my $url = $self->param('url'); $self->render(text => $self->client->get($url)->success->dom->at('title')->text); }; post '/:offset' => sub { my $self = shift; my $offset = $self->param('offset') || 23; $self->render(json => {list => [0 .. $offset]}); }; app->start; __DATA__ @@ clock.html.ep % my ($second, $minute, $hour) = (localtime(time))[0, 1, 2]; The time is <%= $hour %>:<%= $minute %>:<%= $second %>. См. более дружественную к пользователю документацию L и L. =head2 Вот такие пироги .---------------------------------------------------------------. | | | .----------------------------------------------' | | .--------------------------------------------. | Application | | Mojolicious::Lite | | | '--------------------------------------------' | | .--------------------------------------------. | | | Mojolicious | '----------------' '--------------------------------------------' .---------------------------------------------------------------. | Mojo | '---------------------------------------------------------------' .-------. .-----------. .--------. .------------. .-------------. | CGI | | FastCGI | | PSGI | | HTTP 1.1 | | WebSocket | '-------' '-----------' '--------' '------------' '-------------' АТРИБУТЫ L наследует все атрибуты из L и реализует следующие. =head2 C my $class = $mojo->controller_class; $mojo = $mojo->controller_class('Mojolicious::Controller'); Класс который будет использоваться в качестве контроллера, по умолчанию используется L. =head2 C my $mode = $mojo->mode; $mojo = $mojo->mode('production'); Режим работы для вашего приложения. По умолчанию используется значение переменной окружения C или C. Mojo назовёт лог-файл по текущему режиму; если режим отличается от C, логи будут ограничены. Если вы хотите добавить в ваше приложение логику, зависящую от режима, можете добавить подпрограмму C<$mode_mode>. sub development_mode { my $self = shift; } sub production_mode { my $self = shift; } =head2 C my $plugins = $mojo->plugins; $mojo = $mojo->plugins(Mojolicious::Plugins->new); Загрузчик плагина по умолчанию — объект L. Обычно вы можете оставить всё как есть, см. L, если хотите написать плагин. =head2 C my $renderer = $mojo->renderer; $mojo = $mojo->renderer(MojoX::Renderer->new); Используется для визуализации контента, по умолчанию L. Два основных плагина визуализации L и L содержат более подробную информацию. =head2 C my $routes = $mojo->routes; $mojo = $mojo->routes(MojoX::Dispatcher::Routes->new); Диспетчер маршрутов, по умолчанию L. Вы используете его в стартовом методе для определения url endpoints для вашего приложения. sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action')->to('test#welcome'); } =head2 C my $secret = $mojo->secret; $mojo = $mojo->secret('passw0rd'); Секретный пароль, используемый для подписанных cookies и т.п., по умолчанию — название приложения, что не очень надежно, поэтому вы должны изменить его!!! До тех пор, пока вы будете использовать значение по умолчанию, в лог файл будут писаться отладочные сообщения с напоминанием о смене пароля. =head2 C my $static = $mojo->static; $mojo = $mojo->static(MojoX::Dispatcher::Static->new); Для обслуживания статических ресурсов из каталога C, по умолчанию L. =head2 C my $types = $mojo->types; $mojo = $mojo->types(MojoX::Types->new); Отвечает за отслеживание типов контента, который вы хотите обслуживать в приложении, по умолчанию L. Вы можете легко зарегистрировать новый тип. $mojo->types->type(vti => 'help/vampire') =head1 Методы L наследует все методы от L и реализует следующие новые. =head2 C my $mojo = Mojolicious->new; Создаёт новое приложение L. Автоматически определяет ваш домашний каталог и устанавливает логирование, основываясь на вашем текущем режиме работы. Кроме того, устанавливается маршрутизация, статическая диспетчеризация и стандартный набор плагинов. =head2 C $mojo->dispatch($c); Сердце каждого приложения Mojolicious, вызывает диспетчеры статических файлов и маршрутов для каждого запроса. =head2 C $mojo->finish($c); Чистка после обработки запроса, как правило, вызывается автоматически. =head2 C $tx = $mojo->handler($tx); Устанавливает контроллер по умолчанию и вызывает процесс для каждого запроса. =head2 C $mojo->plugin('something'); $mojo->plugin('something', foo => 23); $mojo->plugin('something', {foo => 23}); Загрузка плагина. =head2 C $mojo->process($c); Данный метод может быть перегружен, чтобы сделать логику, зависящую от запроса, по умолчанию просто вызывает C. Вообще-то, вместо него вы будете использовать плагин или контроллер, считайте его за кувалду в вашем набор инструментов. sub process { my ($self, $c) = @_; $self->dispatch($c); } =head2 C Mojolicious->start; Mojolicious->start('daemon'); Запускает интерфейс командной строки L для вашего приложения. =head2 C $mojo->startup; Это ваша основная точка входа в приложении, метод будет вызываться при запуске. sub startup { my $self = shift; } =head1 ПОДДЕРЖКА =head2 В интернете http://mojolicious.org =head2 IRC #mojo на irc.perl.org =head2 Список рассылки http://groups.google.com/group/mojolicious =head1 РАЗРАБОТКА =head2 Репозиторий http://github.com/kraih/mojo =head1 АВТОР Sebastian Riedel, C. =head1 ГЛАВНЫЕ РАЗРАБОТЧИКИ Viacheslav Tykhanovskyi, C. БЛАГОДАРНОСТИ В алфавитном порядке: Adam Kennedy Adriano Ferreira Alex Salimon Alexey Likhatskiy Anatoly Sharifulin Andre Vieth Andrew Fresh Andreas Koenig Andy Grundman Aristotle Pagaltzis Ask Bjoern Hansen Audrey Tang Breno G. de Oliveira Burak Gursoy Ch Lamprecht Christian Hansen Curt Tilmes David Davis Dmitry Konstantinov Gisle Aas Glen Hinkle Graham Barr Hideki Yamamura James Duncan Jaroslav Muhin Jesse Vincent Jonathan Yu Kazuhiro Shibuya Kevin Old Lars Balker Rasmussen Leon Brocard Maik Fischer Marcus Ramberg Mark Stosberg Matthew Lineen Maksym Komar Maxim Vuets Mirko Westermeier Oleg Zhelo Pascal Gaudette Pedro Melo Pierre-Yves Ritschard Rafal Pocztarski Randal Schwartz Robert Hicks Ryan Jendoubi Sascha Kiefer Sergey Zasenko Shu Cho Stanis Trendelenburg Tatsuhiko Miyagawa Uwe Voelker Yaroslav Korshak Yuki Kimoto =head1 КОПИРАЙТ И ЛИЦЕНЗИЯ Copyright (C) 2008-2010, Sebastian Riedel. Эта программа является свободным программным обеспечением, вы можете поставлять и/или модифицировать её на условиях Artistic License 2.0 =cut ------------------------------------------------------------------------------- http://translated.by/you/mojolicious-the-web-in-a-box/into-ru/trans/ Original (English): Mojolicious - The Web In A Box! (http://search.cpan.org/~kraih/Mojolicious-0.999926/lib/Mojolicious.pm) Translation: © zhdinar, Minoru, vti. translated.by crowd