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);

просто продолжайте добавлять больше функций в класс, и они будут экспортированы :)