Mojolicious::Lite 3 Patrones. Perl Insertado

Después de servir ficheros desde un directorio, vamos a crear páginas web, partiendo de patrones.

use strict;
use Mojolicious::Lite;


get 'index';
get 'html5';
get 'lista';

app->start;

__DATA__

@@ index.html.ep
 Hola, soy mojolicious
@@ html5.html.ep
  <!doctype html>
  <html>
  <head>
  <meta charset="utf-8" />
  <title>HTML 5</title>
  </head>
  <body>
  <h2> Patrón de página web con Mojolicious::Lite</h2>
  </body>
  </html>

@@ lista.html.ep
  %# Haciendo una lista en perl
  % my $lista='';
  % $lista="<ol>\n<li>" . join("</li>\n<li>",qw/Unix Windows Android macOs Arduino/) ."</li>\n</ol>\n";
  %#
   <!doctype html>
  <html>
  <head>
  <meta charset="utf-8" />
  <title>Lista de Sistemas</title>
  </head>
  <body>
  <h2> Lista de Sistemas </h2>
  <%== $lista %>
  </body>
  </html>


Después de ver cómo se distribuyen ficheros directamente, vamos a empezar contenido, por medio de patrones.

Una instrucción

significa que Mojolicious, cuando recibe una llamada HTTP, con el método get, primero va a intentar localizar un fichero .public/index. Si no, el paso siguiente es buscar un patrón con el nombre index.html.ep.

La extensión ep significa ‘embebbed perl’ en inglés, esto es código perl incorporado. La explicación, un poco más adelante.

Mojolicious busca en el directorio templates, si hay un fichero llamado index.html.ep, si lo encuentra, lo utiliza.

Si no existe, como en este caso, busca una entrada de la forma @@ index.html.ep, después de la sección __DATA__

Recordamos, que perl las secciones __DATA__ o __END__, indican que se ha terminado el programa, pero Perl es capaz de leerlas como si fuera la entrada estándar. Es una facilidad muy útil para hacer prototipos y pruebas rápidas.

La marca @@ ha de figurar al principio de la línea, sin espacios.

#!/usr/bin/env perl
## Este programa imprime las líneas
## escritas al final.
use strict;

while(<DATA>) {
print;
}
__DATA__
Uno
Dos
Tres
Cuatro

Una vez que encuentra el trozo de código, que parte de la marca @@index.html.ep hasta una nueva marca, o hasta el final del fichero, Mojolicious lo procesa como un patrón.

Mojolicious, crea una página web, a partir del patrón, y la devuelve al servidor.

  • morbo detecta los cambios en el fichero. Cada vez que lo modificamos con el editor morbo lo recarga.
  • Las funciones ‘get’ realizan un proceso de configuración, o carga del servidor. El servidor arranca con la sentencia app->start.
  • __INDEX__ no funciona. El programa Perl tiene que acabar con la instrucción __DATA__

Patrones, un primer uso.

Un patrón produce una página web. El patrón más simple consiste únicamente en texto. En el primer ejemplo, al reconocerse la llamada desde el navegador a index.html, Mojolicious encuentra el patrón, y devuelve el texto.

http://127.0.0.1:3000/index.html

Hola, soy mojolicious

El segundo ejemplo, el patrón html5, opera de la misma manera, lo único que el texto devuelto consiste en una mínima página web, completa.

http://127.0.0.1:3000/html5.html 

<!doctype html>
  <html>
  <head>
  <meta charset="utf-8" />
  <title>HTML 5</title>
  </head>
  <body>
  <h2> Patrón de página web con Mojolicious::Lite</h2>
  </body>
</html>


Construyendo la página web con perl

El tercer ejemplo utiliza Perl para construir la página

http://127.0.0.1:3000/html5.html

 <!doctype html>
  <html>
  <head>
  <meta charset="utf-8" />
  <title>Lista de Sistemas</title>
  </head>
  <body>
  <h2> Lista de Sistemas </h2>
  <ol>
<li>Unix</li>
<li>Windows</li>
<li>Android</li>
<li>macOs</li>
<li>Arduino</li>
</ol>

  </body>
  </html>




Como funciona

Perl reconoce y ejecuta el código de programación que está incluido en el patrón.

  • El caracter % al principo de línea, índica que la línea se compone de código perl.
  • Los caracteres %# al principio de línea, indican que el resto de la línea es un comentario
  • Cuando el procesador encuentra texto contenido entre los delimitadores <%== %>, se interpreta el texto como código perl, y el resultado final se inserta en la página web que se está produciendo.