Así que todos saben lo que es. Así que comencemos por entender qué es AST. Básicamente, este es un código JavaScript normal para tu React. Y si ves cuando selecciono esto, esto en el lado derecho es tu árbol AST. Esto es básicamente un árbol que contiene nodos, diferentes nodos. Así que si hago clic en return, me mostrará una declaración de retorno. Esta cosa en particular es todo un nodo. Luego, si selecciono una función, entonces se resalta la declaración de función. Este es otro nodo. Luego, si hago clic en H1, entonces se resalta, este es otro nodo. Básicamente, tiene múltiples nodos dentro de un árbol.
Y así, comencemos por entender cómo abordaremos la construcción del plugin de Babel. Así que primero que nada, si intentamos hacerlo manualmente, encontraremos HTML, etiqueta HTML, la etiqueta HTML de apertura y dentro de eso veremos si contiene un prop de estilo. Luego, dentro de eso iniciaremos sesión y buscaremos si contiene un alias o incluso si no contiene ningún alias, podría contener una propiedad como un valor de token. Bien, entonces puede ser color de fondo, ¿verdad? y luego dólar rojo. Aún así, queremos convertir dólar rojo en el valor de token apropiado. Bien. Así es como lo abordaremos.
Y así, comencemos. Así que primero que nada, intentaremos obtener la configuración del archivo definido. Por ejemplo, podemos hacer que el usuario cree un archivo custom.config. js. Y luego haremos una operación de lectura de archivo y obtendremos la configuración. No lo estoy mostrando aquí, pero puedes hacerlo. Bien, así que esta es nuestra configuración. contiene alias, BGC, tokens, rojo, bien. Y luego esta es nuestra función principal, el plugin principal de Babel. Así que el plugin de Babel es esencialmente una función y devuelve un objeto de patrón de visitante. Bien, entonces lo que es el patrón de visitante, es como un iterador, y esto seguirá iterando sobre tus nodos de código, diferentes nodos de tu árbol. Y cada vez que paso una propiedad como JSX attribute y es una función dentro de esa función de callback, obtengo la ruta, esta ruta, supongamos, JSX attribute lo que es JSX attribute.
Comments