2012-09-02 12 views
11

Mi piacerebbe essere in grado di costruire le funzionalità per la mia applicazione in un sistema stile plug-in per un paio di ragioni:Costruire un sistema di plugin per un nodejs basa MVC piattaforma

  1. nuovi progetti possono scegliere quali plugin sono necessarie e non avere il codice per la funzionalità che non è necessaria
  2. Altri sviluppatori possono creare plug-in per il sistema senza aver bisogno di troppa conoscenza del funzionamento principale.

Non sono proprio sicuro di come implementarlo. Mi piacerebbe avere una cartella plugins per ospitare separatamente ma credo che le mie domande sono:

  1. Come plugin interagiscono con il sistema centrale?
  2. Come funziona la struttura della cartella? Avrebbero ciascuno la struttura MVC standard: controller, servizi, modelli, viste, ecc.?

Immagino che qualcuno abbia un tutorial o documentazione relativa a questa tecnica che sarebbe utile. Ho fatto un po 'di ricerche ma è tutto un po' troppo vicino al codice reale con cui stanno lavorando, invece del concetto, e non ho trovato nulla di specificamente correlato a nodejs.

+1

Penso che questa sia una buona domanda. Puoi condividere con noi qualche anticipo su di esso? –

risposta

0

Creare un prototipo di plug-in per la funzionalità base e consentire all'utente di definire il proprio plug-in in un modulo. Nel modulo l'utente eredita un oggetto dal prototipo, estende la sua funzionalità e quindi esporta un costruttore che restituisce l'oggetto plugin .

Il sistema principale carica tutti i plug-in tramite require ("pluginname") e per ciascuno chiama il costruttore.

4

suggerisco un approccio simile a quello che ho fatto sul progetto uptime (https://github.com/fzaninotto/uptime/blob/master/app.js#L46):

  • eventi dell'applicazione grilletto in parti critiche della vostra applicazione
  • aggiungere una sezione 'plugin' nel applicaition configurazione
  • ogni nome di plugin deve essere un nome di pacchetto. I pacchetti di plugin devono restituire un callback o un oggetto con una funzione init().
  • in entrambi i casi, inserire nei plug-in gli oggetti che dovranno essere eseguiti (configurazione, connessioni, ecc.) Quando si chiama init() o si esegue la richiamata.
  • moduli plugin registrare ascoltatori agli eventi dell'applicazione e modificarlo

Vantaggi:

  • leggeri
  • si basano su NPM per le dipendenze
  • non reivent la ruota
Problemi correlati