Mojolicious::Lite 5 Helpers. Funciones auxiliares

Helpers en la documentación original de Mojolicious

En Mojolicious, un helper es una función auxiliar. En uno de los ejemplos anteriores ya había una mención al helper dumper.

Es un paso para estructurar los patrones y poder construirlos con partes reutilizables. Con eso se puede ya trabajar en prototipos de diseño de páginas web.

Para ello se utilizan helpers provistos por Mojolicious.

#!/usr/bin/env perl
## Fichero ej_1.pl
use strict;
use Mojolicious::Lite;

helper saludo => sub {
   my $c=shift;
   my $texto=join(' ',@_);
   return "Hola, $texto";
  };

get 'index';
get 'estadisticas';
get 'ayuda';

app->start;

__DATA__

@@ index.html.ep
  %= saludo qw/ este es el índice de la página/;

@@ estadisticas.html.ep
  %= saludo('esta es','una página','de','estadísticas')

@@ ayuda.html.ep
  %= saludo 'esta es una','página','de', 'ayuda'


Este ejemplo tiene tres patrones. Sirve las páginas con nombre index.html, estadisticas.html y ayuda.html

Define un helper, una función auxiliar, llamado saludo.

Un helper es una función que hay que registrar como tal.

Para ello, en Mojolicious::Lite se utiliza la función helper.

La función que registra el helper tiene como argumentos el nombre del mismo, y una referencia a una subrutina anónima, o a una subrutina, que es el helper.

## Forma habitual
helper saludo => sub { # …. };

## Otras formas equivalentes.
helper('saludo',sub{#....});

##

helper('saludo',\&saludo);
sub saludo {# …..}


Cuando se llama a un helper, Mojolicious pasa como primer argumento un objeto fundamental en Mojolicious, el controlador. En inglés, controller.

Si bien es muy importante, no vamos a utilizarlo por ahora.

Es muy normal, utilizar el nombre de variable $c para designar al controlador y en el ejemplo, se hace así.

Después, el helper recibe una tabla (array) con el resto de los argumentos como siempre en Perl.

sub {
 my $c = shift; ## El primer argumento pasado a un helper es el controlador.
}

El ejemplo simplemente crea un saludo, con una parte inicial y el resto de los argumentos separados por espacios.

Una nueva forma de invocar al programa para hacer pruebas

En vez de arrancar el servidor con morbo, para hacer llamada desde el navegador o curl, vamos a utilizar un método nuevo.

Suponemos que el fichero perl se llama ej_1.pl.

Lo llamamos como un script de Perl, pasando como argumento el comando get, y la dirección de la página deseada.

$ perl ej_1.pl get /index.html
### Si hacemos el programa ejecutable
$ chmod a+x ej_1.pl
###
$ ./ej1.pl get /index.html

De esta forma, Mojolicious crea un servidor web para una sola llamada, procesa el patrón y finaliza el programa.

…….
…….
Hola, este es el índice de la página

La utilización del helper es muy sencilla. Es una llamada a una función perl, con una lista de argumentos.

El ejemplo recuerda varias formas de llamar a una función en Perl

Importante: Un helper puede utilizarse desde cualquier patrón. Al contrario que las funciones definidas en el programa principal, o en otros patrones.