Da app.js in der Regel das Hauptinitialisierungsmodul in Ihrer App ist, initialisiert es normalerweise sowohl den Webserver als auch socket.io und lädt andere Dinge, die von der App benötigt werden.
Eine typische Methode, io
mit anderen Modulen zu teilen, besteht darin, sie an die anderen Module in der Konstruktorfunktion dieses Moduls zu übergeben. Das würde so funktionieren:
Dann in consumer.js:
%Vor% Oder, wenn Sie eine .start()
-Methode verwenden möchten, um Dinge zu initialisieren, können Sie das gleiche tun (kleine Unterschiede):
Und die Startmethode in consumer.js
%Vor%Dies ist das sogenannte Push-Modul der gemeinsamen Nutzung von Ressourcen. Das Modul, das Sie lädt, schiebt Ihnen einige geteilte Informationen, indem Sie es im Konstruktor übergeben.
Es gibt auch "Pull" -Modelle, bei denen das Modul selbst eine Methode in einem anderen Modul aufruft, um die geteilten Informationen (in diesem Fall das io
-Objekt) abzurufen.
Oft kann eines der beiden Modelle funktionieren, aber in der Regel fühlt sich das eine oder das andere natürlicher an, je nachdem, wie die Module geladen werden und wer die gewünschten Informationen hat und wie Module unter anderen Umständen wiederverwendet werden sollen. p>
Wenn Sie den globalen Gültigkeitsbereich vermeiden möchten, machen Sie Ihre io
in einer separaten Datei wie dieser:
Dann in app.js:
%Vor%und in consumer.js:
%Vor%Sie können eine Singleton-Instanz in nur 4 Zeilen erstellen.
Schreiben Sie in websocket.js Ihren Serverkonfigurationscode.
%Vor%Dann benötigen Sie in Ihrer consumer.js nur die Datei
%Vor%Tags und Links javascript node.js socket.io