Hmmm, vale… me pareció un gran curso, sobre todo para aprender sobre Web Components que es una tecnología nativa del navegador, de hecho tengo cierto hype por eso xD, sin embargo… No todo es color de rosa:(, Web Components está genial para cuando quieres trabajar con cosas nativas del navegador y quieres dividir en componentes sin tener que usar librerías externas, pero (al menos hablando con lo que vimos este curso), tiene unas cuantas desventajas que creo que es importante que todos sepan:
.
- No es SEO Friendly: Como vimos en el curso, todos los Web Components necesitan de JavaScript para poder ser renderizados, y de hecho dejan la etiqueta personalizada del componente ahí después de ser renderizado. Los robots de búsqueda (aquellos que se encargan de indexar tus páginas en los buscadores) no interpretan JavaScript (o de repente algunos sí), pero si nos quedamos en el caso de que no interpretan JavaScript (que es lo más común), tu página no sería indexada porque no encontraría nada dentro de ella, ya que todo se renderiza con JavaScript. Si quieres ver lo que vería un robot de búsqueda, te recomiendo que des click derecho sobre tu página y le des a “Ver código fuente de la página”, como ves, no hay nada de información ahí, simplemente etiquetas HTML pero no tienen nada de contenido, entonces estos robots no encontrarían nada de contenido en tu página y no te indexarian.
.
Claro, surgen algunas alternativas para esto, de hecho se me hace curioso ver que existe tecnologías de Server Side Rendering para web components 🤔, les recomiendo darse un paso por estos enlaces que hablan sobre ello:
.
https://github.com/WICG/webcomponents/issues/500
dev punto to/steveblue/server-side-rendering-web-components-320g
. - Solo manejan la parte de modularización de componentes: Los Web Components son útiles para dividir todo en componentes y poder tener un código más organizado, sin embargo, solo se limitan a eso, a diferencia de frameworks como React o Vue que trabajan muchas más features que solo usar componentes.
.
En resumen, siento que los Web Components están ok, pero no sería algo que use para un proyecto profesional por la desventaja del non SEO friendly y porque hay librerías que ofrecen mucho más y la parte de componentes solo hace parte de un todo, por ejemplo, Vue te ofrece reactividad, básicamente es una forma fácil de actualizar el contenido de un componente cuando el valor de una variable cambia, sin que tú tengas que hacer nada, te ofrece un router y te ofrece una forma sencilla de hacer SPA’s (y sí, ya sé, no todo son SPA’s), pero está ahí la posibilidad, además de que tiene la posibilidad de usar Server Side Rendering (lo cual quita el problema del non SEO friendly, es decir, al momento de cargarse la página sí carga todo el contenido de una vez y al dar click en “ver código fuente de la página” sí sale impreso todo el contenido, que es justamente lo que ven los robots de búsqueda).
.
Incluso, hay tecnologías directamente en el servidor como Laravel Blade que también te permite manejar componentes, y esto ya no es JavaScript, es directamente PHP que tu servidor se encarga de compilar y al ser desde el servidor, el SSR ya viene incluido 🤔.
.
Así que por todas estas razones y teniendo mejores opciones que son más avanzadas, te dan mejores features y ya resolvieron los problemas que Web Components tienen… yo no elegiría usar Web Components para un proyecto en producción 🤔.
.
Y ojo, no estoy diciendo nada negativo del curso (que sé que algunos lo interpretarán así ¬¬), el curso está excelente, me encantó conocer sobre Web Components y de hecho quiero hacer proyectos de práctica usando Web Components xD, pero hay que poner todo en una balanza y no solo ver el lado positivo, sino también ver las desventajas que traen, ya que tener estas dos visiones y conocer estas desventajas puedes ayudarte a decidir con qué tecnología trabajar a la hora de hacer un nuevo proyecto que será dedicado a producción 😄
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?