Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las cadenas de texto de JavaScript han sido desde siempre muy limitadas,
sobre todo comparadas con las cadenas de lenguajes como PHP, Python o
Ruby. Las Template Strings del estndar EcmaScript 6 (que estn disponibles
a partir de Google Chrome 41) eliminan todas estas limitaciones y permiten
incluso definir DSLs (domain-specific languages) en tus aplicaciones
JavaScript.
Las principales funcionalidades que aportan las Template Strings son:
Interpolacin de cadenas.
Definicin de cadenas de texto en varias lneas sin tener que usar hacks.
Cadenas etiquetadas.
Sintaxis
Las Template Strings utilizan las comillas invertidas o backticks para delimitar
sus contenidos, en vez de las tradicionales comillas simples o dobles de las
cadenas de texto normales. As que este es un ejemplo de cmo definir
una Template String:
// esto es una Template String
var saludo = `Hola Mundo!`;
Aunque de momento las Template Strings no parecen gran cosa, sigue leyendo
para descubrir todas sus funcionalidades.
Interpolacin de cadenas
Una de las mejores caractersticas de las Template Strings es la interpolacin
de cadenas. En pocas palabras, la interpolacin permite utilizar cualquier
expresin vlida de JavaScript (como por ejemplo la suma de dos variables)
dentro de una cadena y obtener como resultado la cadena completa con la
expresin evaluada.
Las partes variables de una Template String se denominan placeholders y
utilizan la sintaxis ${ }para diferenciarse del resto de la cadena. Ejemplo:
// Sustitucin simple de cadenas
var nombre = "Juan";
console.log(`Hola ${nombre}!`);
"Mundo";
Este cdigo funciona bien porque cualquier espacio en blanco (incluyendo los
saltos de lnea) que se incluyen dentro de las comillas invertidas se considera
que es parte de la cadena.
Cadenas etiquetadas
Otra de las funcionalidades avanzadas de las Template Strings son las "tagged
strings" o cadenas etiquetadas. Las etiquetas permiten transformar los
contenidos de una cadena aplicndoles una funcin. El nombre de la etiqueta
se indica justo delante de la cadena y su nombre coincide con el de la funcin
que se ejecutar para transformar los contenidos de la cadena:
fn`Hola ${nombre}! Tu ltima conexin fue el ${fechaUltimaConexion}.`
return resultado;
}
function escape(s) {
return s.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/'/g, "'")
.replace(/"/g, """);
}
// Embeber HTML/XML
jsx`<a href="${url}">${texto}</a>` // se transforma en React.DOM.a({ hre
f: url }, texto)
Resumen y referencias
Las Template Strings se pueden utilizar en Google Chrome 41, la Tech
Preview de Internet Explorer, Firefox 35 y el framework io.js. La mayor parte
de transpilers de ES6 tambin las soportan, como por ejemplo Tracuer.
Puedes encontrar ms ejemplos sobre Template Strings en el repositorio de
ejemplos de cdigo de Google Chrome. Consulta tambin este artculo para
descubrir el cdigo equivalente en ES5 para conseguir una funcionalidad
similar a la ofrecida por ES6.
Las Template Strings aaden funcionalidades muy interesantes a las cadenas
de texto tradicionales de JavaScript. Entre otras, permiten interpolar
expresiones, definir cadenas en varias lneas y crear tu propio lenguaje DSL
gracias a las cadenas etiquetadas.
http://www.2ality.com/2015/01/template-strings-html.html
https://leanpub.com/understandinges6/read/#leanpub-auto-taggedtemplates
http://jaysoo.ca/2014/03/20/i18n-with-es6-template-strings/
http://odetocode.com/blogs/scott/archive/2014/09/30/features-of-es6-part8-tagged-templates.aspx
Sobre el autor
Este artculo fue publicado originalmente por Addy Osmani y ha sido traducido
con permiso porJavier Eguiluz.