Mojolicious - обзор возможностей фреймворка

НАЗВАНИЕ

Mojolicious - Веб в коробке!

СИНОПСИС

# Mojolicious приложение 
package MyApp;

use base 'Mojolicious';

sub startup {
    my $self = shift;

    # Routes
    my $r = $self->routes;

    # 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 }

ОПИСАНИЕ

Еще в начале дня Интернета была эта прекрасная библиотека Perl называемая CGI, многие люди изучали Perl только из за неё. Она достаточно проста, чтобы начать работу, не зная многого о языке и достаточно мощна, чтобы держать вас в курсе обо всем, что происходит с приложением, обучение на практике было очень увлекательно. Хотя большинство методов, используемых в настоящее время устарело, сама идея остается актуальной. Mojolicious это новая попытка реализации этой идеи c использованием передовых технологий.

Возможности

  • Великолепный MVC веб-фреймворк, позволяющий написать полноценное приложение в одном файле

  • Очень чистый, портативный и объектно-ориентированный чистый Perl API без какой-либо скрытой магии и никаких требований, кроме как поддержка Perl начиная с версии 5.8.7.

  • Полная поддержка HTTP 1.1 и WebSocket клиент/серверая реализация с IPv6, TLS, IDNA, pinelining, распределение памяти и поддержка multipart.

  • Встроенный асинхронный ввод-вывод, prefork-веб с поддержкой epoll и kqueue, "горячая" разработка и использование доменного сокета UNIX (анг. Unix domain socket sharing)

  • Поддержка CGI, FastCGI и PSGI.

  • Свежий код, основанный на многолетнем опыте разработки Catalyst.

  • Мощные возможности из коробки с RESTful роутерами, плагинами, сессиями, signed cookies, сервером статических файлов (static file server), тестированием фреймворка, шаблонизацией в стиле perl, JSON, I18N,

Duct Tape для HTML5 Web

Веб-разработка для людей, делающих сложные вещи возможными и прочие развлечения.

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 %>.

См. более дружественную к пользователю документацию Mojolicious::Guides и Mojolicious::Lite.

Вот такие пироги (Have Some Cake)

.---------------------------------------------------------------.
|                             Fun!                              |
'---------------------------------------------------------------'
.---------------------------------------------------------------.
|                                                               |
|                .----------------------------------------------'
|                | .--------------------------------------------.
|   Application  | |              Mojolicious::Lite             |
|                | '--------------------------------------------'
|                | .--------------------------------------------.
|                | |                 Mojolicious                |
'----------------' '--------------------------------------------'
.---------------------------------------------------------------.
|                             Mojo                              |
'---------------------------------------------------------------'
.-------. .-----------. .--------. .------------. .-------------.
|  CGI  | |  FastCGI  | |  PSGI  | |  HTTP 1.1  | |  WebSocket  |
'-------' '-----------' '--------' '------------' '-------------'

Хорошим дополнением к документации Mojolicious послужит приведенная ниже презентация:

Statistic

About this Entry

This page contains a single entry by Dinar published on July 11, 2010 11:48 PM.

Lingua::RU::Inflect was the previous entry in this blog.

Mojolicious - атрибуты и методы is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.