Accede a todo EDteam con un único pago¡Sube a premium!

Formas de interpolar variables en Pug

Aprende a cómo usar las distintas formas de interpolación de variables en Pug y la diferencia que hay entre éstas

Diseño web
8 minutos
Hace 6 años
Formas de interpolar variables en Pug

Pug (anteriormente conocido como Jade) es un motor de plantillas de NodeJS que nos permite preprocesar código HTML de una manera más rápida y sencilla. Nos otorga una sintaxis más limpia y poderosa en la que se incluyen nuevas características como ciclos, variables, mixins, etc. El día de hoy nos centraremos más en las variables.

Las variables en Pug nos permiten guardar información que por lo general termina siendo compilada. Conforme va creciendo un proyecto, es normal ir declarando nuevas variables para implementarlas en distintos lugares, el problema empieza cuando en una línea de código debes mezclar varias variables con cadenas de texto.

El propósito de este artículo es mostrarte las distintas opciones que tienes para interpolar variables y así facilitarte el uso de las variables en distintos ámbitos.

Value output - String Interpolation

Empecemos por lo más básico, que es la salida o compilación de una variable. La sintaxis es etiqueta= variable.

1-let number = 30 2 3p= number 4

Compila a:

1<p>30</p> 2

Nada del otro mundo, ¿verdad? Pero, ¿y si queremos agregarle una cadena de texto? Lo usual sería concadenar con la variable, lo cual es válido, lo tedioso empieza cuando tienes muchas variables y debes juntarlas con varias cadenas de texto. Aquí es donde la interpolación se vuelve nuestra fiel acompañante. La sintaxis para interpolar es la siguiente: etiqueta Cadena-de-texto #{variable}

Concadenando variables

1-let name = "Jorge Matias", age = 22, address = "New York City" 2 3p= "Hola, mi nombre es " + name + ", tengo " + age + " años y vivo en " + address 4

Interpolando variables

1-let name = "Jorge Matias", age = 22, address = "New York City" 2 3p Hola, mi nombre es #{name}, tengo #{age} años y vivo en #{address} 4

Ambos compilan a:

1<p>Hola, mi nombre es Jorge Matias, tengo 22 años y vivo en New York City</p> 2

Template string

Las template string es otra manera de interpolar variables proveniente de Javascript ES6. Hay que aclarar que, si bien es la misma sintaxis, no quiere decir que con Javascript podamos acceder a las variables que tenemos declaradas en Pug. La sintaxis es la siguiente: etiqueta= ` Cadena de texto ${variable} `. Usemos el ejemplo anterior.

1-let name = "Jorge Matias", age = 22, address = "New York City" 2 3p= `Hola, mi nombre es ${name}, tengo ${age} años y vivo en ${address}` 4

Compila a:

1<p>Hola, mi nombre es Jorge Matias, tengo 22 años y vivo en New York City</p> 2

Unescaped

Algo que sucede con Pug es que si tienes caracteres especiales en una variable, al momento de compilar muestra el código del caracter y no el caracter en sí.

1-let name = "<b>Pedro</b>" 2 3p Hola de nuevo, #{name} 4

Compila a:

1<p>Hola de nuevo, &lt;b&gt;Pedro&lt;/b&gt;</p> 2

Para evitar que esto suceda usaremos el signo de !, la ubicación de éste dependerá de la clase de interpolación que usemos. Si usamos una interpolación nativa, debemos reemplazar el # por ! y si usamos template string es añadir ! antes del =.

1-let name1 = "<b>Pedro</b>", name2 = "<i>Luis</i>" 2 3p Hola de nuevo, !{name1} 4 5p!= `¿Cómo estás, ${name2}?` 6

Compila a:

1<p>Hola de nuevo, <b>Pedro</b></p> 2 3<p>¿Cómo estás, <i>Luis</i>?</p> 4

Tag Interpolation

Una cosa fantástica en Pug es que la interpolación no se detiene con las variables, sino que también puedes hacerlo con etiquetas html. La sintaxis para hacerlo es la siguiente: #\$&etiqueta contenido\$&

1p Estamos interpolando #[span etiquetas html], ¿no es eso genial? 2

Compila a:

1<p>Estamos interpolando <span>etiquetas html</span>, ¿no es eso genial?</p> 2

Lo mejor de todo es que la interpolación de variables convive en armonía con la interpolación de etiquetas

1-let text1 = "interpolación en Pug", text2 = "¿No es eso genial?" 2 3p Mezclamos dos clases de #[b= `${text1}`], #[span #{text2}] 4

Compila a:

1<p>Mezclamos dos clases de <b>interpolación en Pug</b>, <span>¿No es eso genial?</span></p> 2

Whitespace Control

La interpolación es muy útil cuando se habla de texto en una línea, pero utilizando whitespace control podemos crear estructuras con anidaciones más complejas con ayuda del caracter | y las identaciones (no olvides las separaciones que debe haber entre las palabaras). Ejemplo:

1p 2 | Estamos utilizando 3 strong el control de 4 | espacio 5 i en blanco 6

Compila a:

1<p>Estamos utilizando<strong> el control de</strong> espacio<i> en blanco</i></p> 2

La ventaja de utilizar whitespace control es que podemos tener los niveles de anidación que deseemos y mezclarlas con las interpolaciones anteriormente mencionadas.

1-let name = "EDteam", text = "aplicando" 2 3p 4 | Estamos 5 span= `${text} todo` 6 | lo 7 b aprendido 8 | en el #[i blog de] #{name} 9

Compila a:

1<p>Estamos <span>aplicando todo lo<b> aprendido</b></span> en el <i>blog de</i> EDteam</p 2

Después de leer este artículo, manejar variables con cadenas de texto en Pug no volverá a ser un problema.

Comentarios de los usuarios

Pregunta a ChatEDT