Module.exports, которые включают все функции в одной строке
Это следующий вопрос В Node.js, как мне включить "включать" функции из других моих файлов?
Я хотел бы включить внешний js файл, содержащий общие функции для приложения Node.js.
Из одного из ответов в В Node.js, как мне включить "включать" функции из других моих файлов?, это можно сделать с помощью
// tools.js
// ========
module.exports = {
foo: function () {
// whatever
},
bar: function () {
// whatever
}
};
var zemba = function () {
}
Неудобно экспортировать каждую функцию. Возможно ли иметь однострочный механизм, который экспортирует все функции? Что-то похожее на это:
module.exports = 'all functions';
Это гораздо удобнее. Он также менее глючит, если вы позже не сможете экспортировать определенные функции.
Если не однострочный, есть ли более простые альтернативы, которые делают кодирование более удобным? Я просто хочу добавить внешний js файл, состоящий из обычных функций. Что-то вроде include <stdio.h>
в C/С++.
Ответы
Ответ 1
Сначала вы можете написать все объявления функций, а затем экспортировать их в объект:
function bar() {
//bar
}
function foo() {
//foo
}
module.exports = {
foo: foo,
bar: bar
};
Там нет магического однострочного, но вам нужно явно экспортировать функции, которые вы хотите публиковать.
Ответ 2
Стоит отметить, что в ES6 теперь вы можете экспортировать такие функции:
export function foo(){}
export function bar(){}
function zemba(){}
Просто напишите export
перед функциями, которые вы хотите экспортировать. Больше информации здесь.
Ответ 3
Я сделал что-то вроде следующего:
var Exported = {
someFunction: function() { },
anotherFunction: function() { },
}
module.exports = Exported;
Я требую его в другом файле, и я могу получить доступ к этим функциям
var Export = require('path/to/Exported');
Export.someFunction();
Это по существу просто объект с функциями в нем, а затем вы экспортируете объект.
Ответ 4
Если вы используете ES6, вы можете сделать что-то вроде этого:
function bar() {
//bar
}
function foo() {
//foo
}
export default { bar, foo };
Ответ 5
Действительно старый вопрос, но я просто должен был решить эту проблему сам.
Решение, которое я использовал, заключалось в том, чтобы определить класс внутри модуля, чтобы он содержал все мои функции, и просто экспортировать экземпляр класса.
classes.js выглядит следующим образом:
class TestClass
{
Function1() {
return "Function1";
}
Function2() {
return "Function2";
}
}
module.exports = new TestClass();
app.js выглядит следующим образом:
const TestClass = require("./classes");
console.log( TestClass.Function1);
просто продолжайте добавлять больше функций в класс, и они будут экспортированы :)