Recordando, en los primeros días de la web, había una maravillosa colección de programas Perl llamados CGI, muchas personas aprendieron Perl solo por ellos. Era lo suficientemente simple para empezar sin conocer mucho del lenguaje, y suficientemente poderoso como para seguir desarrollando, aprendiendo mientras se programaba, era algo muy divertido. Ahora, mientras la mayor parte de las técnicas utilizadas están obsoletas, la idea que estaba detrás de ellas, no. Mojolicious es un nuevo intento de implementar esta idea usando la tecnología más avanzada.
Características:
* Un fantástico entorno de trabajo web MVC soportando un único y simplificado modo de trabajo con ficheros a través de Mojolicious::Lite. Incluyendo algunos poderes, como las rutas RESTful, complementos, plantillas al estilo Perl, gestión de sesiones, galletas firmadas, comprobaciones del entorno de trabajo, servidor de ficheros estáticos, I18N, soporte Unicode de primera clase y mucho más, para que lo descubras.
* Muy limpio, portátil y una API de programación orientada a objetos en puro Perl, sin ninguna magia escondida y sin requerimientos, más allá de tener un Perl v5.8.7.
* Pila completa del HTTP 1.1 e implementación cliente/servidor WebSocket con TLS, Bonjour, IDNA, Comet (sondeo largo), y soporte de fragmentación y multipartes.
* Un servidor web asíncrono incluido, soportando epoll, kqueue, sockets UNIX y despliegue en caliente, perfecto para los sistemas incrustados.
* Detección automática de CGI, FastCGI y PSGI (Perl Web Server Gateway Interface).
* Soporte de JSON y analizadores XML/HTML5 con selectores CSS3.
* Código fresco basado en años de experiencia desarrollando Catalyst.
Web principal
Mojolicious (CPAN)
Using perl Syntax Highlighting
- use Mojolicious::Lite;
- # Simple route with plain text response
- get '/hello' => sub { shift->render(text => 'Hello World!') };
- # Route to template in DATA section
- get '/time' => 'clock';
- # RESTful web service sending JSON responses
- get '/:offset' => sub {
- my $self = shift;
- my $offset = $self->param('offset') || 23;
- $self->render(json => {list => [0 .. $offset]});
- };
- # Scrape information from remote sites
- post '/title' => sub {
- my $self = shift;
- my $url = $self->param('url') || 'http://mojolicio.us';
- $self->render(text =>
- $self->client->get($url)->res->dom->at('head > title')->text);
- };
- # WebSocket echo service
- websocket '/echo' => sub {
- my $self = shift;
- $self->on_message(
- sub {
- my ($self, $message) = @_;
- $self->send_message("echo: $message");
- }
- );
- };
- app->start;
- __DATA__
- @@ clock.html.ep
- % my ($second, $minute, $hour) = (localtime(time))[0, 1, 2];
- <%= link_to clock => begin %>
- The time is <%= $hour %>:<%= $minute %>:<%= $second %>.
- <% end %>
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
Instalación