Il s'agit d'une question complémentaire à Dans Node.js, comment "inclure" les fonctions de mes autres fichiers?
Je voudrais inclure un fichier js externe qui contient des fonctions communes pour une application node.js.
À partir d'une des réponses de Dans Node.js, comment "inclure" les fonctions de mes autres fichiers? , cela peut être fait par
// tools.js
// ========
module.exports = {
foo: function () {
// whatever
},
bar: function () {
// whatever
}
};
var zemba = function () {
}
Il n'est pas pratique d'exporter chaque fonction. Est-il possible d'avoir une ligne unique qui exporte toutes les fonctions? Quelque chose qui ressemble à ceci;
module.exports = 'all functions';
C'est tellement plus pratique de cette façon. C'est aussi moins bogué si l'on oublie d'exporter certaines fonctions plus tard.
S'il ne s'agit pas d'une ligne unique, existe-t-il des alternatives plus simples qui rendent le codage plus pratique? Je veux juste inclure un fichier js externe composé de fonctions communes de manière pratique. Quelque chose comme include <stdio.h>
en C/C++.
Vous pouvez d'abord écrire toutes vos déclarations de fonctions puis les exporter dans un objet:
function bar() {
//bar
}
function foo() {
//foo
}
module.exports = {
foo: foo,
bar: bar
};
Il n'y a cependant pas de one-liner magique, vous devez exporter explicitement les fonctions que vous souhaitez rendre publiques.
J'ai fait quelque chose comme ceci:
var Exported = {
someFunction: function() { },
anotherFunction: function() { },
}
module.exports = Exported;
J'en ai besoin dans un autre fichier et je peux accéder à ces fonctions
var Export = require('path/to/Exported');
Export.someFunction();
Il s'agit essentiellement d'un objet contenant des fonctions, puis vous exportez l'objet.
Il convient de noter que dans ES6, vous pouvez désormais exporter des fonctions comme celle-ci:
export function foo(){}
export function bar(){}
function zemba(){}
Écrivez simplement export
avant les fonctions que vous souhaitez exporter. Plus d'informations ici .
Si vous utilisez ES6, vous pouvez faire quelque chose comme ça:
function bar() {
//bar
}
function foo() {
//foo
}
export default { bar, foo };
Une très vieille question mais je devais juste résoudre le même problème moi-même. la solution que j'ai utilisée était de définir une classe à l'intérieur du module pour contenir toutes mes fonctions et d'exporter simplement une instance de la classe.
classes.js ressemble à ceci:
class TestClass
{
Function1() {
return "Function1";
}
Function2() {
return "Function2";
}
}
module.exports = new TestClass();
app.js ressemble à ceci:
const TestClass = require("./classes");
console.log( TestClass.Function1);
continuez à ajouter plus de fonctions à la classe et elles seront exportées :)