usted puede ahorrarse todo el código estándar de cableado de su módulos si se utiliza un marco de inyección de dependencias
This answer listas de algunos de ellos. También construí un simpler DI framework here.
EDIT: A continuación se muestra una copia forman la respuesta en caso de que la página cambia
require
es la forma de gestionar dependencias en Node.js la que ciertamente es intuitiva y eficaz, pero tiene también sus limitaciones.
Mi consejo es echar un vistazo a algunos de los contenedores de Inyección de Dependencia disponibles hoy para Node.js para tener una idea de cuáles son sus ventajas y desventajas. Algunos de ellos son:
sólo para nombrar unos pocos.
Ahora la verdadera pregunta es, ¿qué se puede lograr con un contenedor DI Node.js, en comparación con un simple require
?
Pros:
- mejor capacidad de prueba: módulos acepta sus dependencias como entrada
- Inversión de Control: decidir cómo conectar los módulos sin tocar el código principal de su aplicación.
- algoritmo personalizable para resolver módulos: las dependencias tienen identificadores "virtuales", por lo general no están vinculados a una ruta en el sistema de archivos.
- Mejor extensibilidad: habilitada por IoC e identificadores "virtuales".
- Otras cosas de lujo posible:
- asíncrono inicialización
- gestión del ciclo de vida del módulo
- extensibilidad del propio contenedor DI
- se puede implementar fácilmente abstracciones de nivel superior (por ejemplo, AOP)
Contras:
- Diferente de la "experiencia" de Node.js: no usar
require
definitivamente parece que se está desviando de la forma de pensar del nodo.
- La relación entre una dependencia y su implementación no siempre es explícita. Una dependencia puede resolverse en tiempo de ejecución e influenciada por diversos parámetros. El código se vuelve más difícil de entender y depurar
- lento tiempo de arranque
- Madurez (por el momento): ninguna de las soluciones actuales es realmente popular en este momento, por lo que no muchos tutoriales, ningún ecosistema, no batalla probado
- Algunos contenedores DI no funcionarán bien con los paquetes de módulos como Browserify y Webpack.
posible duplicar http://stackoverflow.com/questions/8931239/how-to-access-variables-declared-in-main-app-js-in-seperate-route-files-in-node/8931366 # 8931366 –