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