2012-09-02 20 views
11

Me gustaría ser capaz de construir la funcionalidad para mi aplicación en un sistema de estilo plug-in para un par de razones:La construcción de un sistema de plugins para un nodejs basa MVC plataforma

  1. Nuevos proyectos pueden elegir qué complementos son necesarios y no tiene código para la funcionalidad que no es necesaria
  2. Otros desarrolladores pueden crear complementos para el sistema sin necesidad de demasiados conocimientos del funcionamiento del núcleo.

No estoy seguro de cómo implementarlo. Me gustaría tener una carpeta plugins para acoger estos por separado, pero supongo que mis preguntas son:

  1. ¿Cómo plugins interactuar con el sistema central?
  2. ¿Cómo funciona la estructura de carpetas? ¿Cada uno mantendría la estructura MVC estándar: controladores, servicios, modelos, vistas, etc.?

Supongo que si alguien tiene un tutorial o alguna documentación relacionada con esta técnica que sería útil. He hecho un poco de búsqueda, pero está un poco relacionado con el código real con el que trabajan, en lugar del concepto, y no encontré nada específicamente relacionado con nodejs.

+1

Creo que esta es una buena pregunta. ¿Puedes compartir con nosotros algún avance en eso? –

Respuesta

0

Cree un prototipo de complemento para la funcionalidad base , y permita que el usuario defina su complemento en un módulo. En el módulo , el usuario heredará un objeto del prototipo, ampliará su funcionalidad y luego exportará un constructor que devuelve el complemento objeto.

El sistema principal carga todos los complementos por requerimiento ("nombre de complemento") y para cada uno llama al constructor.

4

que sugieren un enfoque similar a lo que he hecho en el proyecto el tiempo de actividad (https://github.com/fzaninotto/uptime/blob/master/app.js#L46):

  • eventos de aplicación de disparo en partes críticas de su aplicación
  • añadir una sección de 'plugins' en el applicaition configuración
  • cada nombre de complemento debe ser un nombre de paquete. Los paquetes de complemento deben devolver una devolución de llamada, o un objeto con una función init().
  • de cualquier manera, inyecte a los complementos los objetos que necesitarán ejecutar (configuración, conexiones, etc.) al llamar a init() o al ejecutar la devolución de llamada.
  • módulos plugin registran los oyentes a los eventos de la aplicación y modificarlo

Beneficios:

  • ligeros
  • dependen de la NGP para las dependencias
  • no reivent la rueda
Cuestiones relacionadas