2012-09-02 8 views
11

Chciałbym być w stanie zbudować funkcjonalność dla mojej aplikacji w systemie stylu plugin dla paru powodów:Budowanie systemu wtyczek dla nodejs oparciu MVC platforma

  1. Nowe projekty mogą wybrać, które wtyczki są konieczne i nie ma kodu funkcjonalności, który nie jest potrzebny
  2. Inni programiści mogą budować wtyczki do systemu bez konieczności zbytniej wiedzy o podstawowych funkcjach.

Nie jestem pewien, jak wdrożyć to. Chciałbym mieć folder plugins gościć je oddzielnie, ale myślę, że moje pytania są następujące:

  1. Jak wtyczek interakcję z systemu podstawowego?
  2. Jak działa struktura folderów? Czy każdy z nich miałby standardową strukturę MVC: kontrolery, usługi, modele, widoki itp.?

Zgaduję, że jeśli ktoś ma tutorial lub trochę dokumentacji związanej z tą techniką, to byłoby pomocne. Zrobiłem trochę wyszukiwania, ale to wszystko jest trochę zbyt ściśle związane z rzeczywistym kodem, nad którym pracują, zamiast z koncepcją i nie znalazłem nic konkretnego związanego z nodejs.

+1

Myślę, że to całkiem dobre pytanie. Czy możesz podzielić się z nami postępem w tej dziedzinie? –

Odpowiedz

0

Utwórz prototyp wtyczki dla podstawowej funkcji i pozwól użytkownikowi zdefiniować jego wtyczkę w module. W module użytkownik odziedziczy obiekt z prototypu, rozszerzy jego funkcjonalność, a następnie wyeksportuje konstruktor, który zwróci obiekt wtyczki .

Główny system ładuje wszystkie wtyczki według require ("nazwa wtyczki"), a dla każdego z nich wywołuje konstruktora.

4

Proponuję podejście podobne do tego, co robiłem na projekcie uptime (https://github.com/fzaninotto/uptime/blob/master/app.js#L46):

  • zdarzeń aplikacji wyzwalania w części krytycznych aplikacji
  • dodać sekcję „Wtyczki” w applicaition konfiguracja
  • każda nazwa wtyczki musi być nazwą pakietu. Pakiety pluginów powinny zwracać albo wywołanie zwrotne, albo obiekt z funkcją init().
  • w jedną stronę, wstrzyknij do wtyczek obiekty, które będą potrzebne do uruchomienia (konfiguracja, połączenia itp.) Podczas wywoływania metody init() lub wykonywania wywołania zwrotnego.
  • moduły plugin zarejestrować słuchaczy zdarzeń aplikacji i zmodyfikować go

Przywileje:

  • lekkie
  • polegać na KMP w zależności
  • nie reivent koło