effel: vernetzte function in Module umwandeln

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

  1. 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

  2. Hallo effel,

    das mit require geladen wird.

    Also keine ECMAscript Module.

    Welchen Modulmanager verwendest du?

    Rolf

    --
    sumpsi - posui - obstruxi
    1. keinen, selbst geschrieben und in datei abgelgt, mit require geladen

      1. 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

        --
        sumpsi - posui - obstruxi
      2. Hallo effel,

        okay. Du verwendest also common.js Module in node.js. Das bedeutet: einer dieser 3 Fälle trifft zu:

        • du hast keine package.json
        • du hast in deiner package.json KEINEN "type" Eintrag
        • du hast in deiner package.json einen "type":"common.js" Eintrag

        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

        --
        sumpsi - posui - obstruxi
        1. erst danke, ich lese es mir in ruhe durch

          Effel