Loading Likes...

En nuestra última publicación, aprendimos sobre qué es un web component y por qué nos mola tanto usarlos en habitissimo.

Hoy aprenderemos cómo tratar los web components en nuestro navegador.
Pero antes de seguir, asegúrate de tener instalado php7. Si estás con un linux, te recomiendo el siguiente tutorial.

Veamos un ejemplo añadido en el post anterior.


<NavbarItems>
 <NavbarItemLink>Page 1</NavbarItemLink>
 <NavbarItemLink>Page 2</NavbarItemLink>
 <NavbarItemLink>Page 3</NavbarItemLink>
</NavbarItems>
 

¿Crees que el navegador entenderá ese código?
Hagamos la prueba…

Creamos un directorio llamado webcomponents-php y dentro de dicho directorio, creamos un archivo llamado app.php

En una línea:

mkdir webcomponents-php && cd webcomponents-php && touch app.php

Para poder trabajar con archivos php debemos tener corriendo un servidor o utilizar la línea de comando (en ese caso no nos sirve). Por suerte php tiene incorporado un servidor web interno que nos facilitará el trabajo.

php -S localhost:8000 app.php

Si accedemos a http://localhost:8000 nos aparecerá una pantalla completamente blanca, eso significa que todo ha ido bien, de verdad, todo ha ido bien.

Es hora de jugar: abre tu editor preferido, copia y pega el siguiente trozo de código dentro app.php


Si actualizas el navegador deberías ver los textos Page 1 Page 2 Page 3.
¿Realmente el navegador ha comprendido nuestro código?

Navegadores y custom elements

Los navegadores actuales permiten crear custom elements (una nueva forma de crear tag html) por tanto el navegador tiene la capacidad de renderizar dichos elementos. ¿Qué pasaría si lo probamos en Internet Explorer 8-9?
Yo he intentado probarlo pero:


¡Crucemos los dedos para que Windows encuentre alguna solución!

Si intentas navegar entre diferentes páginas, ¡verás que es realmente imposible! Esto es debido a que el navegador ha pintado los elementos, pero desconoce de su funcionalidad.


Nota: hoy en día es posible tener custom elements con javascript y a la vez darles funcionalidad, si eres de esas personas curiosas y quieres saber cómo crearlos, te recomiendo este excelente tutorial de Carlos Azaustre. Además, te reto a que investigues el código fuente de la web de youtube 🙂

Renderizando HTML

En nuestra pequeña aplicación no podemos navegar entre las diferentes páginas y esto es debido a que no sabe cómo se ha de comportar cada `NavbarItemLink`, por tanto debemos generar un resultado entendible para el navegador.

Fijando un objetivo

Nuestro objetivo será servir al navegador elementos (tags) nativos que sin añadir código javascript, sepa cual es el comportamiento real de ese elemento.

Por tanto, pasaremos de que el navegador reciba nuestros elementos custom a recibir elementos HTML nativos (ver imagen)

Tratando nuestros elementos.

Olvida absolutamente todo lo que hemos visto hasta ahora, desde HTML hasta Web components y tómate un tiempo para analizar el ejemplo que hemos copiado del post anterior.

¿A qué te recuerda?
Si no te recuerda a nada, añade la siguiente línea en la parte superior del código.

  
    <?xml version="1.0" ?>

    <NavbarItems>
      ...
    </NavbarItems>
  


¡Así es!. No es más que XML con una estructura en árbol, cuyo elemento raíz es NavbarItems y que está compuesto por n nodos hijos (NavbarItemLink).

Si nunca has tenido la oportunidad de trabajar con XML o desconoces qué es, te recomiendo leer este pequeño resument sobre XML

DOM al rescate

Con la clase DOM (que forman parte de la librería libxml2) podemos acceder y actualizar dinámicamente el contenido, la estructura y el estilo de nuestro XML. Si quieres saber más acerca de DOM, te recomiendo el Tutorial DOM PHP

Probemos un momento para validar que nuestro elementos funcionan con DOM (sea un XML válido)

Vuelve al editor y modifica el archivo `app.php` e introduce el siguiente código.

Si actualizas el navegador, deberás ver el primer resultado que obtuviste al principio. Elementos pintados, pero sin funcionalidad.

De momento vamos por buen camino, pero hagamos una pausa y analicemos lo que hemos aprendido hasta el momento.

  • Los navegadores renderizan tags inexistentes (tag custom) y sin comportamiento alguno.
  • Podemos crear tags custom y darle funcionalidad con javascript o con algún framework.
  • Los tags pueden ser tratados como elementos XML
  • La clase DOM nos permite acceder y modificar el contenido de un XML

Esto ha sido todo por hoy. En el próximo post abordaremos cómo renderizar nuestros elementos a tags html nativos

Si te quedaste con ganas, puedes avanzar e implementar una solución. Nos encantaría ver cómo has solucionado nuestro problema :).

Happy coding!


Loading Likes...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *