La solución aquí es, para ser honesto, un poco compleja. Así que si tengo esto, probablemente necesitaré extraer la funcionalidad compartida y luego llamar a esta funcionalidad compartida para ambos modelos. Es más fácil dibujarlo que hacerlo en realidad. Puede ser bastante complejo entender cuál es la funcionalidad.
Está bien. Referencias cíclicas. Ahora cambiemos al archivo barrel, y aquí es de donde viene el nombre. Un archivo barrel, el logstock y barrel significa todo incluyendo todo, y el archivo barrel es básicamente un archivo índice desde el cual exportas múltiples funciones. Así que se verá algo así. Tengo la función A, B, C, lo que sea que esté exportando, y luego en tu archivo, vas a importar estas funciones solo desde el archivo índice y usar lo que necesites. Cuando hablamos de archivos barrel, tiene un muy buen punto. Ocultará la estructura interna. Así que no cada módulo que está importando desde este módulo necesita conocer la estructura interna, y te da cierta libertad para hacer refactorización interna sin afectar a los consumidores externos. Pero también tiene desventajas. Lo malo es que aumenta la superficie de importación, así que intentas importar una sola función y terminas importando 500 archivos.
Esto puede tener un gran impacto en el rendimiento, y porque los archivos barrel importan muchos archivos, tienes una mejor oportunidad de obtener referencias cíclicas porque simplemente estás importando tantos archivos. Así que quiero mostrar un ejemplo de cómo uso tsmove nuevamente en código para arreglar un ejemplo. Así que nuevamente, tengo aquí una versión ligeramente diferente de mi importación yendo desde una exportación diferente, y luego en mi archivo, estoy importando la función 1, 6 y 8 desde este archivo índice. Y ahora digamos que miré el código y dije, está bien, así que la función 7 y la función 8 del módulo D, quiero extraerlas a un módulo separado. Quiero sacarlas de estos utils y tenerlas en su propio módulo. Y creé un archivo índice de dominio D con el módulo D, y exporto solo estos archivos. También moví los archivos. Ahora, la gente podría venir y decir, mira, cuando mueves los archivos, tu IDE puede arreglar todas tus importaciones por ti. Cierto, pero cuando trabajas con bases de código grandes, probablemente va a crear referencias muy malas, especialmente si estás usando un atajo para la ruta. Podría usar una ruta relativa en lugar del atajo para la ruta. Está bien, así que ahora en mi archivo, quiero cambiar la función 1, 6 y 8 de utils y dividirla en dos importaciones, una todavía de utils y otra de la función 8. Si esto es solo en un archivo, puedes hacerlo manualmente, no hay problema. Pero el problema es que probablemente tienes cientos de importaciones para estos utils por todas partes, y hacerlo uno por uno puede ser realmente tedioso. Así que, ¿qué hacemos? Creamos una función que se llama runReplaceImports, está bien, usando nuevamente tsmove.
Comments