vernetzte function in Module umwandeln

- javascript
Hallo Alle,
ich habe die function komp in das Module "komp" gepackt, das mit require geladen wird.
Die function komp hat viel (unter)funktionsaufrufe.
Meine Frage: 1.kann ich aus dem geladenen Modul "komp" function außerhalb des Moduls aufrufen. vermutlich nein
2.diese vielen benötigten (unter)functionen können selbst in einem Modul "unter" gepackt werden, das dann im Modul "komp" mit require eingefügt wird. Da diese (unter)function noch an vielen anderen Stellen gebraucht werden, muß dieses Module "unter" noch an eben diesen Stellen eingefügt werden. Ist das dann jedes Mal ein anderes Moduel"unter", gibt es gegeseitige Beinflussung? und: hat ein Modul Globale Variable, in denen Zwischenwerte gespeichert werden können? Mein Problem ist:
Mein Programm hat stark vernetzte functionen, die schwer auseinander zu hat machen sind!!
Freundliche Grüße an alle dir mir helfen
Liebe(r) effel,
klingt so, als müsstest Du alle Funktionen in ein gemeinsames Modul packen, wenn sie inhaltlich zusammenhängen. Oder warum denkst Du, dass komp
in ein eigenes Modul sollte?
Liebe Grüße
Felix Riesterer
Hallo effel,
das mit require geladen wird.
Also keine ECMAscript Module.
Welchen Modulmanager verwendest du?
Rolf
keinen, selbst geschrieben und in datei abgelgt, mit require geladen
Hallo effel,
Du hast die require Funktion selbst geschrieben?
Ah. Du verwendest node.js. Sorry. Das hat du sicher schon mal erwähnt, aber sowas merke ich mir nicht, das solltest du dabei sagen.
Ich muss mir das Modulsystem von node nochmal anschauen
Rolf
Hallo effel,
okay. Du verwendest also common.js Module in node.js. Das bedeutet: einer dieser 3 Fälle trifft zu:
RICHTIG?
Wenn ja:
Module werden nur einmal geladen. Es sei denn, du manipulierst require.cache. Das heißt: Du kannst ein Modul funcs.js bauen, wo deine Unterfunktionen drin sind, und sie als Exporte definieren.
1.kann ich aus dem geladenen Modul "komp" function außerhalb des Moduls aufrufen.
Ja, kannst Du, wenn sich diese Funktion in einem anderen Modul befindet und von diesem exportiert wird. Dann kannst Du dieses andere Modul in "komp" per require laden und auf seine Exporte zugreifen.
Ja, kannst Du auch, wenn die Funktion im main-Modul steckt und dort exportiert wird. Dazu schreibst Du im main-Modul
module.exports.funcXY = function(x,y) { ... };
und in Komp verwendest Du require.main.exports.funcXY
2.diese vielen benötigten (unter)functionen können selbst in einem Modul "unter" gepackt werden, das dann im Modul "komp" mit require eingefügt wird.
Ja, das geht. Hier mit einem math.js…
// math.cjs
exports.CleanPI = 3;
exports.add = function(a,b) { return a+b; }:
exports.sub = function(a,b) { return a-b; }:
const math = require("./math.js");
console.log("2+3 = ", math.add(2,3));
console.log("Ordentliches PI: ", math.CleanPI);
Dieses math.js kannst Du in viele andere Module importieren, es ist immer das gleiche Modul. Insbesondere ist das Objekt, das Du von require bekommst, immer das gleiche, du musst also vorsichtig damit sein, dass Du es nicht versehentlich veränderst.
Rolf
erst danke, ich lese es mir in ruhe durch
Effel