🥇 Uso de templates

🍿 ¿Qué son los templates?

Que sucede cuando nuestra página html contiene diferentes partes de ella que cambian según diferentes condiciones, supongamos que tenemos una pagina de inicio de un diario que cambia de titulo, sus artículos y con ellos autores.

Para estos casos existe el concepto de template. Un template es un documento que tiene preparados ciertos elementos que son reemplazados por contenido dinámico.

  1. Vamos a guardar ahora nuestro hola_mundo.html como hola_mundo.tpl.

La extensiĂłn .tpl es una convenciĂłn que se usa muy frecuentemente para hacer referencia a una plantilla.

  1. En lugar de un titulo y un párrafo estáticos vamos a agregar dos comodines, %titulo% y %parrafo%.
<!-- hola_mundo.tpl -->
<!doctype html>
<html>
    <head>
        <title>%titulo%</title>
    </head>
    <body>
        <p>%parrafo%</p>
    </body>
</html>
  1. Ahora definimos en variables diferentes el titulo y párrafo.
var titulo = 'Este es el titulo de la pagina.';
var parrafo = 'Este es el parrafo de la pagina.';
  1. Vamos a actualizar la referencia al archivo.
var html = fs.readFileSync(__dirname + '/hola_mundo.tpl');
  1. Vamos a convertir el contenido de nuestro template a texto.
html = html.toString();
  1. Y vamos a reemplazar los comodines por contenido dinámico.
html = html.replace('%titulo%',titulo);     // reemplazar %titulo% por el valor de la variable titulo
html = html.replace('%parrafo%',parrafo);   // reemplazar %parrafo% por el valor de la variable parrafo

Como la funciĂłn replace regresa un string, podemos utilizar la sintaxis encadenada para simplificar lo anterior en una sola lĂ­nea.

html = html.replace('%titulo%',titulo).replace('%parrafo%',parrafo);

e incluso podemos simplificar aun mas si encademamos todo.

var html = fs.readFileSync(__dirname + '/hola_mundo.tpl')
    .toString()
    .replace('%titulo%',titulo)
    .replace('%parrafo%',parrafo);
  1. Al final rendereamos la pagina con end.
// llamamos a la libreria http
var http = require('http');

// llamamos a la libreria fs
var fs = require('fs');

// definimos los valores de nuestros comodines a reemplzar
var titulo = 'Este es el titulo de la pagina.';
var parrafo = 'Este es el parrafo de la pagina.';

// creamos nuestro server
var miServidor = http.createServer((peticion,respuesta) => {
    respuesta.writeHead(200,{'Content-Type' : 'text/html'});
    var html = fs.readFileSync(__dirname + '/hola_mundo.tpl')
        .toString()
        .replace('%titulo%',titulo)
        .replace('%parrafo%',parrafo);
    respuesta.end(html);
});

// inicializar el servidor
miServidor.listen(1111,'127.0.0.1');
  1. Cierra y abre nuevamente el proceso de node, y podrás notar que ahora los comodines han sido reemplazados por texto dinámico.

En el ejemplo anterior podemos ver una serie de operaciones de manera consecutiva utilizando la sintaxis encadenada. Esto si bien es aceptable tiene la limitante que requiere que se entienda todo el comportamiento implícito de la sintaxis. Por lo cual no es una buena idea utilizarla especialmente si se trabaja con programadores que están teniendo su primer contacto con el lenguaje.