Y eso se representa como una definición de función con una propiedad de nombre, parámetros y el cuerpo. Y cualquier archivo de código que tengas, puedes descomponerlo y representarlo en esta estructura de árbol.
Entonces, por ejemplo, si estás usando TypeScript para analizarlo, le das el texto fuente del ejemplo y te dará este AST. Y luego vamos a recorrer este árbol y usar coincidencias de patrones para extraer todas estas diferentes secciones. Así que encontraremos qué es una propiedad, qué es un método de instancia y qué es un controlador de eventos.
Este es un ejemplo de cómo podría verse una de estas coincidencias de patrones. Así que tenemos... ¿Es esto una llamada a función? Así que recorremos todos los nodos del árbol y si es una llamada a función, entonces lo extraemos en estos controladores de eventos externos donde tenemos el nombre, los parámetros, y el cuerpo. Así que construimos este modelo de memoria de cómo se ve realmente el ejemplo de código. Y luego usamos nuestros convertidores específicos del framework. Así que aquí podemos ver Angular y Vue. Tienes la sintaxis diferente para tratar de lograr algo similar. Y así, usamos estos convertidores específicos del framework para cada categoría. Y una vez que hayas hecho eso, puedes generar ese código en una plantilla base y encontrar que tienes tus ejemplos de Angular, React y Vue.
Y solo hemos escrito el de TypeScript junto con estos convertidores. Solo para asegurarnos de que no hemos cometido un error, lo validamos con TypeScript. Probamos cada uno de estos ejemplos con Cypress para asegurarnos de que no haya errores, un poco de captura de instantáneas para las regresiones visuales. Y si estamos muy entusiasmados y cuidadosos, podemos comparar las diferencias con git en todo el repositorio para asegurarnos de que no hemos hecho nada tonto. Y el resultado para nosotros es que podemos actualizar todos nuestros ejemplos de framework en un solo lugar. Por ejemplo, agregamos soporte para React y TypeScript, y solo tomó un día, pero hay 500 ejemplos allí. Si queremos agregar soporte para un nuevo framework, solo agregamos un convertidor. Y somos desarrolladores felices porque no estamos manteniendo todos estos ejemplos, y hay más tiempo para trabajar en características. Y creo que nuestros usuarios están más contentos porque pueden ir a nuestra documentación, decir qué framework están usando, qué variación están usando, y pueden ver el código que coincide con eso para copiar y pegar en su aplicación.
Así que como conclusiones, quiero que te des cuenta de este punto, que podemos usar árboles de sintaxis abstracta de TypeScript para generar y razonar sobre nuestro código. Y una excelente manera de comenzar con esto es astexplorer.net. Simplemente ingresa tu código allí y te mostrará cómo se ve el árbol de sintaxis abstracta. Y, finalmente, no mantengas manualmente algo que puedes generar. Si te inspiras en este trabajo, me encantaría saber qué construyes con él. Gracias.
Comments