So fügen Sie ein Plugin hinzu und verwenden ein externes Modul / eine Datei auf RT

9

Ich habe node.js-Anwendung / Modul, die funktioniert mit Plug-in-Konzept, d. h.

Mein Modul verhält sich wie ein Proxy mit zusätzlichen Funktionen wie Hinzufügen neuer Funktionen zu den vordefinierten Funktionen (Methoden). Um dies zu tun, müssen Sie Folgendes tun:

  

klonen meine Anwendung

     

Erstellen Sie einen neuen Ordner, der Extender genannt wird (in meiner App)

In diesem Ordner sollten Sie zwei Dateien bereitstellen

  
  1. extend.js mit Ihrer Logik als Funktionen / Methoden
  2.   
  3. extend.json, die Ihre API definieren (um zu wissen, welche Datei aufgerufen werden soll)
  4.   

Hinweis: die JS & amp; JSON-Dateiname muss identisch sein

lässt beispielsweise annehmen, dass dies Ihre extend.json -Datei

ist %Vor%

In diesem Fall, wenn der Benutzer in den Browser den folgenden Link eingeben

  

localhost: 3000 / run

Ich rufe die Funktion runFn (die in der Datei extend.js existiert) mit ihrer Logik auf und das funktioniert wie erwartet (unter der Haube lese ich die json & amp; ; js-Dateien und rufen die Funktion auf wie extender[fnName](req, res) );

Jetzt Ich möchte den Anwendungsfall des Hinzufügens von externem Extender über Code unterstützen zum Beispiel, dass der Benutzer etwas wie

machen wird %Vor%

Also wenn mein Modul es Suchwetter laufen lässt, gibt es neue externe Extender mit allen Konfigurationen und wenn ja, beziehen Sie sich darauf in RT (auf die js & amp; json Dateien).

Meine Fragen sind:

  1. Ich muss herausfinden, wann mein Modul startet Wer ist für mein Modul registriert und mache dann meine Logik in diesem Modul, wie kann es im Knoten gemacht werden?

2.Wenn es andere Lösung im Knoten gibt, lass es mich wissen.

    
shopia T 25.04.2016, 12:16
quelle

3 Antworten

1

Sie könnten die Initialisierungsfunktion in Ihrer API implementieren, um Modulbenutzern die Freiheit zu geben. Zum Beispiel.

%Vor%

Oder wie MattW geschrieben hat, können Sie es wie eine Express-Middleware implementieren, damit Modulbenutzer es mit ihrem eigenen Server verwenden können. Zum Beispiel:

%Vor%

Sehen Sie sich webpack-dev-server an, webpack-dev-middleware wie ein anderes Beispiel. Hoffe, es gibt eine gewisse Ähnlichkeit mit Ihrer Aufgabe. Webpack behandelt auch fs und configs. Sie haben gerade Middleware und Standalone-Server in separate Module aufgeteilt. Und es gibt keinen "Arbeitscode", weil wir den Code Ihres Moduls brauchen, um über Wrapper zu sprechen, was von Ihrer Modul-Implementierung abhängen würde. Nur ein paar Gedanken.

    
Fake Fish 04.05.2016 10:13
quelle
1

Wenn ich Ihr Problem nicht falsch verstehe, kann Ihnen dieser Ansatz vielleicht helfen.

Ich denke, Sie könnten Ihre Extender in einer ACL wie JSON auflisten, die nicht nur den Pfad oder den FnName enthält, sondern auch den file_to_js-Pfad oder jede andere Eigenschaft, die Sie benötigen, wie aktive oder Sicherheitsparameter.

%Vor%

Dann können Sie Ihre Module, die ACL json lesen, vorab laden und sie zwischenspeichern lassen, damit sie verlängert werden können.

%Vor%

So sollte Router.init () den Cache auf Server-Init ausführen; Router.extend () sollte Ihre API-Anfrage auflösen oder eine gerade verarbeitete Anfrage erweitern.

Hoffe es hilft dir!

    
gtrenco 04.05.2016 11:50
quelle
0

Ich glaube, dass ein einfacher Router Ihre Anforderungen erfüllen sollte:

%Vor%     
MattW. 27.04.2016 15:38
quelle