Hola, cualquier ayuda o enlace a preguntas similares es muy apreciada, ya que he investigado un poco, pero no estoy seguro de cuál es el camino más correcto aquí.
Realmente no sé cómo explicar exactamente lo que quiero, así que dibujé esta imagen que podría ayudar a explicar un poco:
Actualmente tengo todo escrito en 1 archivo y me gustaría hacerlo más modular para que otros puedan codificar sus propias 'estrategias' usando objetos del sistema, etc.
El objetivo principal aquí es que puedo cambiar todo el código del sistema en un solo lugar porque tengo muchas estrategias y si quiero actualizar el código del sistema para agregar más resultados, etc. necesito cambiarlo en muchos archivos.
Una buena comparación que puedo ver con esto es el testcafe del módulo npm. Una vez descargado, cómo lo usa en su código es similar:
import testcafe test(testName, => { all the code you want to run is here and you have many objects and functions provided from testcafe you can use})Supongo que para lograr esto, tal vez necesito clases globales, tal vez una clase llamada estrategia y dentro de ella están todos los objetos, funciones, bucle for, resultados de registro, etc.
Cosas que me preocupan:
Todo esto es de un nivel bastante alto, no estoy buscando el código exacto para escribir para resolverlo todo (por supuesto, sería bueno :)) sino más bien buscando sugerencias, ideas y caminos que debería investigar. ¡Cualquier ayuda es muy apreciada!
No exporte algo del archivo de usuario que el archivo del sistema importaría. Haga uso de la inversión de dependencia y solo haga que el código de usuario dependa del código del sistema. Dado que el código de usuario es el punto de entrada de la aplicación, eso es fácil.
En el archivo de código del sistema, exporte una función que tome la estrategia como parámetro y ejecute el ciclo principal. No es necesario "importar" nada.
// system.js import … from 'environment'; /* declarations */ export function utility() { … } /* the loop */ export function run(strategy) { let … // more declarations for (…) { … step = strategy(newValues) … } console.log(results); } // userFile.js import { utility, run } from 'system'; let … // globals run((…) => { … // use globals, loop arguments and imported utilities });