Estoy trabajando en un proyecto con Node.js y el código del lado del servidor es lo suficientemente grande como para dividirlo en varios archivos. Parece que esto se ha hecho desde el lado del cliente durante años, el desarrollo se hace insertando una etiqueta script
para cada archivo y solo para la distribución se usa algo como "Hacer" para unir todo. Me doy cuenta de que no tiene sentido conquistar todo el código del lado del servidor, así que no estoy preguntando cómo hacerlo. Lo más parecido que puedo encontrar para usar es require()
, sin embargo, no se comporta del mismo modo que script
en el navegador en el que los archivos requeridos no comparten un espacio de nombres común.Cómo administrar múltiples archivos JS del lado del servidor con Node.js
Mirando algunos proyectos anteriores de Node.js, como Shooter, parece que alguna vez no fue así, o me falta algo muy simple en mi código. Mis archivos requeridos no pueden acceder al espacio de nombres de llamadas globales en tiempo de compilación ni tiempo de ejecución. ¿Hay alguna forma simple de evitar esto o estamos obligados a hacer que todos nuestros archivos JS requeridos sean completamente autónomos desde el alcance de la llamada?
Gracias por la información, marcando como correcto. En general, estoy de acuerdo con el concepto mal global == pero parece que sí tienen su lugar. ¿Qué sucede si, por ejemplo, tengo una propiedad base que quiero establecer para una "clase" dada que depende de un valor en otro lugar? Ejemplo: 'SomeClass.prototype.baseProp = SomeOtherClass.prototype.prop * 2;' En este caso, me veo obligado a configurar esto en instanciación de objetos a través del constructor, o bien, uso el objeto 'global' como sugirió . Creo que el último puede ser el más apropiado. –
@XHR Luego 'SomeClass' tiene una dependencia en' SomeOtherClass' y 'require ('SomeOtherClass')' dentro de SomeClass.js. Tengo una única variable global en mi código. 'global._ = require (" guión bajo ")' porque lo uso _every_archivo único. Ese es el único caso de uso para 'global'. – Raynos