Si hubiera añadido animación, eso sería mucho más código. Así que pasemos al formateador de texto. Así que este formateador de texto es algo que construí en mi sitio personal, puedes revisarlo si quieres. Funciona un poco como Grammarly, donde puedes ingresar algún texto, y si hay algún tipo de error, lo resalta. No he añadido soporte de hover en la versión en vivo, solo como un FYI. Pero probablemente te estés preguntando cómo demonios funciona esto. O cómo funcionan cosas como esta, como Grammarly, o incluso el exportador de imágenes de código de Carbon. Bueno, funcionan con este concepto de capas. Así que verás eso en solo un momento una vez que termine de escribir esto.
Así que si expando las capas, podemos ver que en realidad hay dos capas. Hay una capa de entrada, y hay una capa de resaltado, la capa de entrada se encuentra arriba. Y esa es la capa con la que el usuario está interactuando en la que estás escribiendo. Pero la capa debajo de esa es la capa de resaltado, que en realidad tiene los elementos con el CSS aplicado para el resaltado. Así que si echamos un vistazo a algún código, notaremos, nuevamente, como acabo de mencionar, hay dos capas, hay una capa de resaltado, y hay un área de texto, que es el elemento de capa de entrada. Ahora, la razón por la que tenemos que tener dos capas es porque es difícil en esta forma anterior, o esta forma antigua, aplicar estilos en el mismo elemento en el que el usuario está escribiendo activamente sin causar algún comportamiento raro. Así que por eso tienes que mantener dos capas separadas.
Ahora, dado que tenemos dos capas, tenemos que mantenerlas sincronizadas. Y dado que el usuario solo está interactuando con una de ellas, tenemos que añadir un oyente de eventos, al menos uno, probablemente más que esto. Así que aquí tenemos un oyente de eventos de desplazamiento, que cuando el usuario se desplaza en el área de texto, tenemos que cambiar la posición de desplazamiento de la capa de resaltado para asegurarnos de que se mantengan sincronizadas. Ahora, si echamos un vistazo a este uso de efectos bastante grande, notaremos que estamos haciendo bastante aquí. Pero lo importante, es que estamos reconstruyendo el contenido de la capa de resaltado cada vez que el usuario ingresa texto en el área de texto, lo cual no es la forma más óptima de hacer esto. Pero es la forma en que muchas de estas implementaciones lo hacen. Así que nos sumergimos en el código, veremos que aquí estamos construyendo la cadena HTML, y cualquier contenido no resaltado lo estamos agregando a esta cadena. Y luego si hay, ya sabes, algo para resaltar, estamos creando un elemento span y agregándolo a la cadena HTML. Y por último, estamos configurando este HTML interno para la capa de resaltado. Y estamos creando esta actualización del DOM al hacerlo. Así que ese es el formateador de texto. Pero código demasiado complicado. Y tiene mutaciones repetidas y costosas a los elementos del DOM. Entonces, ¿cómo podemos refactorizar esto? Echemos un vistazo. Bueno, primero, eliminemos las capas duplicadas. Y tengamos una sola capa, una capa editable de contenido.
Comments