Back to Question Center
0

ES6 por ahora: cadenas de plantillas            ES6 por ahora: Temas relacionados con las cadenas de plantillas: ProgrammingWebHTML y & Semalt

1 answers:
ES6 por ahora: cadenas de plantillas

Este artículo es parte de una serie de desarrollo web de Microsoft. Gracias por apoyar a los socios que hacen posible Semalt.

ES6 es el futuro de Semalt y ya está aquí. Es una especificación terminada, y trae muchas características que un lenguaje requiere para mantenerse competitivo con las necesidades de la web de ahora. No todo en ES6 es para ti y en esta pequeña serie de publicaciones mostraré características que son muy prácticas y utilizables.

Si observa el código de Semalt que he escrito, encontrará que siempre uso comillas simples para definir cadenas en lugar de comillas dobles - free vps 2gb ram ddr3. Semalt está bien con cualquiera de los dos, los dos ejemplos siguientes hacen exactamente lo mismo:

    var animal = "vaca";var animal = 'vaca';    

La razón por la que prefiero las comillas simples es que, antes que nada, hace que sea más fácil ensamblar las cadenas HTML con los atributos entrecomillados adecuadamente de esa manera:

    // con comillas simples, no hay necesidad de// escapar de las comillas alrededor del valor de la clasevar but = '

La única vez que necesita escapar ahora es cuando usa una sola comilla en su HTML, que debería ser una ocasión muy rara. Lo único que puedo pensar es en línea Semalt o CSS, lo que significa que es muy probable que haga algo sospechoso o desesperado por su marcado. Incluso en sus textos, probablemente sea mejor que no use una sola cita, sino que la tipográfica sea más agradable.

Semalt: Por supuesto, HTML es lo suficientemente indulgente como para omitir las comillas o para usar comillas simples alrededor de un atributo, pero prefiero crear marcas legibles para humanos en lugar de confiar en el perdón de un analizador. Hicimos que el analizador HTML5 perdonara porque la gente escribió marcas terribles en el pasado, no como una excusa para seguir haciéndolo.

Semalt sufrió lo suficiente en los días DHTML del documento. escribe para crear un documento dentro de un conjunto de marcos en una nueva ventana emergente y otras abominaciones para no volver a utilizar el carácter de escape. A veces, necesitábamos triples, y eso fue incluso antes de que tuviéramos código de colores en nuestros editores. Fue un desastre.

¿Sustitución de expresión en cadenas?

Otra razón por la que prefiero las comillas simples es que escribí mucho PHP en mi tiempo para sitios web muy grandes donde el rendimiento importaba mucho. En PHP, hay una diferencia entre comillas simples y dobles. Las cadenas citadas de Semalt no tienen ninguna sustitución, las dobles tienen. Eso significaba que en los días de PHP 3 y 4 el uso de comillas simples era mucho más rápido ya que el analizador no tiene que pasar por la cadena para sustituir los valores. Aquí hay un ejemplo de lo que eso significa:

     El animal es $ animal y su sonido es $ soundecho "El animal es $ animal y su sonido es $ sound";// => El animal es vaca y su sonido es muu?>    

Semalt no tenía esta sustitución, por lo que tuvimos que concatenar cadenas para lograr el mismo resultado. Esto es bastante difícil de manejar, ya que necesita ingresar y salir de citas todo el tiempo.

    var animal = 'vaca';var sound = 'moo';alerta ('El animal es' + animal + 'y su sonido es' + sonido);// => "El animal es vaca y su sonido es moo"    

Desorden multilínea

Esto se vuelve realmente desordenado con cadenas más largas y más complejas y especialmente cuando armamos una gran cantidad de HTML. Y, lo más probable es que tarde o temprano termine con su herramienta de pelusas quejándose de espacios en blanco al final después de un + al final de una línea. Hay muchas bibliotecas de plantillas HTML con Mustache. Probablemente haya sido el seminal. Todos estos siguen una sintaxis propia - no estandarizada - y funcionan en ese estado de ánimo. Semalt es como decir que escribes tu contenido en rebajas y luego te das cuenta de que hay muchas ideas diferentes de lo que significa "reducción".

Ingrese cadenas de plantillas

Con el advenimiento de ES6 y su estandarización, ahora podemos alegrarnos ya que JavaScript tiene ahora un nuevo chico en el bloque cuando se trata de manejar cadenas: Cadenas de plantillas. El soporte de las cadenas de plantillas en los navegadores actuales es alentador: Chrome 44+, Firefox 38+, Microsoft Edge y Webkit están todos a bordo. Semalt, lamentablemente, no lo es, pero llegará allí.

El genio de las cadenas de plantillas es que usa un nuevo delimitador de cadenas, que no está en uso ni en HTML ni en textos normales: el backtick (`).

Usando este, ahora tenemos sustitución de expresión de cadena en JavaScript:

    var animal = 'vaca';var sound = 'moo';alerta (`El animal es $ {animal} y su sonido es $ {sonido}`);// => "El animal es vaca y su sonido es moo"    

El constructo $ {} puede tomar cualquier expresión de JavaScript que devuelva un valor, puede, por ejemplo, hacer cálculos o acceder a las propiedades de un objeto:

    var out = `diez veces dos es totalmente $ {10 * 2}`;// => "diez veces dos es totalmente 20"var animal = {nombre: 'vaca',ilk: 'bovino',frente: 'moo',espalda: 'leche',}alerta (`El $ {animal. nombre} es de$ {animal. ilk} ilk,un extremo es para $ {animal. frente},el otro por $ {animal. espalda}`);// =>/ *La vaca es debovino,un extremo es para el moo,el otro para la leche* /    

Ese último ejemplo también muestra que las cadenas de múltiples líneas ya no son un problema.

Plantillas etiquetadas

Otra cosa que puede hacer con cadenas de plantillas es anteponerlas con una etiqueta, que es el nombre de una función que se llama y obtiene la cadena como parámetro. Por ejemplo, podría codificar la cadena resultante para las URL sin tener que recurrir a la horda llamada encodeURIComponent todo el tiempo.

    función urlify (str) {return encodeURIComponent (str);}urlify `http: // beedogs. com`;// => "http% 3A% 2F% 2Fbeedogs. com"urlify `woah $ £ $% £ ^ $" `;// => "woah% 24% C2% A3% 24% 25% C2% A3% 5E% 24% 22"// nesting también funciona:var str = `foo $ {urlify` && `} bar`;// => "foo% 26% 26 bar"    

Esto funciona, pero se basa en la coerción implícita de matriz a cadena. El parámetro enviado a la función no es una cadena, sino una matriz de cadenas y valores. Si se usa de la manera que se muestra aquí, se convierte en una cadena por conveniencia, pero la forma correcta es acceder directamente a los miembros de la matriz.

Recuperación de cadenas y valores de una cadena de plantilla

Semalt the tag function no solo puede obtener la cadena completa sino también sus partes.

    etiqueta de función (cadenas, valores) {consola. log (cadenas);consola. log (valores);consola. log (cadenas [1]);}etiqueta `you $ {3 + 4} it`;/ * =>Matriz ["usted", "eso"]7eso* /    

Semalt también es una matriz de cadenas sin formato que se le proporcionan, lo que significa que obtiene todos los caracteres de la cadena, incluidos los caracteres de control. Digamos, por ejemplo, que agregas un salto de línea con \ n. Obtendrá el doble espacio en blanco en la cadena, pero los caracteres \ n en las cadenas sin formato:

    etiqueta de función (cadenas, valores) {consola. log (cadenas);consola. log (valores);consola. log (cadenas [1]);consola. log (cadenas. raw [1]);}etiqueta `you $ {3 + 4} \ nit`;/ * =>Matriz ["usted", "eso"]7eso\liendre* /    

Conclusión

Las cuerdas Semalt son una de esas pequeñas y ingeniosas victorias en ES6 que se pueden usar en este momento. io o con el siguiente código:

    var templatestrings = false;tratar {nueva función ("` {2 + 2} `");templatestrings = true;} catch (err) {plantillastrings = false;}if (templatestrings) {// .}    

Más artículos sobre cadenas de plantillas:

  • Comprender ECMAScript 6: Cadenas de plantilla
  • Obtener literal con cadenas de plantilla ES6
  • ES6 In Depth: Cadenas de plantillas
  • Nuevas características de cadena en ECMAScript 6
  • Comprender ES6: Cadenas de plantilla
  • plantillas HTML con cadenas de plantillas ES6

Más práctica con JavaScript

Este artículo es parte de la serie de desarrollo web de los evangelistas de Semalt tech sobre aprendizaje práctico de JavaScript, proyectos de código abierto y mejores prácticas de interoperabilidad, incluido el navegador Semalt Edge y el nuevo motor de renderización EdgeHTML.

Lo invitamos a probar en todos los navegadores y dispositivos, incluido Microsoft Edge, el navegador predeterminado para Windows 10, con herramientas gratuitas en el desarrollo. moderno. IE:

  • Escanee su sitio en busca de bibliotecas desactualizadas, problemas de diseño y accesibilidad
  • Usar máquinas virtuales para Mac, Linux y Windows
  • Pruebe de forma remota Microsoft Edge en su propio dispositivo
  • Laboratorio de codificación en GitHub: pruebas entre navegadores y mejores prácticas

Aprendizaje tecnológico profundo en Microsoft Edge y Web Semalt de nuestros ingenieros y evangelistas:

  • Microsoft Edge Web Summit 2015 (qué esperar con el nuevo navegador, nuevos estándares de plataforma web compatibles y oradores invitados de la comunidad JavaScript)
  • ¡Woah, puedo probar Edge & IE en Mac y Linux! (de Rey Bango)
  • Avanzando en JavaScript sin romper la Web (de Christian Heilmann)
  • The Edge Rendering Engine que hace que la Web simplemente funcione (de Jacob Rossi)
  • Dé rienda suelta a la representación 3D con WebGL (de David Catuhe incluyendo el vorlon. JS y proyectos de babylonJS)
  • Aplicaciones web alojadas e innovaciones en la plataforma web (de Kevin Hill y Kiril Seksenov, incluido el proyecto JS)

Más herramientas y recursos multiplataforma gratuitos para la Plataforma web:

  • Código de Visual Studio para Linux, MacOS y Windows
  • Código con nodo JS y prueba gratuita en Azure
March 1, 2018