12

Как в Node.js "подключить" функции из других файлов?

16

Вопрос: Как импортировать функции из файла tools.js в app.js?

У меня есть файл app.js, который выглядит достаточно просто:

var express = require('express');
var app = express.createServer();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.get('/', function(req, res){
  res.render('index', {locals: {
    title: 'NowJS + Express Example'
  }});
});

app.listen(8080);

Теперь я хочу использовать некоторые функции из файла tools.js. Как я могу их импортировать в app.js?

Или, возможно, мне нужно превратить tools.js в модуль и затем использовать require для его подключения? Это кажется сложным, мне бы хотелось просто импортировать файл tools.js, не усложняя.

Существуют ли более простые способы для импортирования функций из одного файла в другой в Node.js?

5 ответ(ов)

17

Вы можете подключать любой файл JavaScript, просто нужно объявить, что вы хотите экспортировать.

В вашем файле tools.js вы экспортируете функции foo и bar, используя module.exports:

// tools.js
// ========
module.exports = {
  foo: function () {
    // любая логика
  },
  bar: function () {
    // любая логика
  }
};

var zemba = function () {
  // эта функция не будет экспортирована
}

Таким образом, функции foo и bar станут доступными при подключении этого модуля.

Теперь в вашем основном файле app.js вы можете подключить tools.js и увидеть, какие функции доступны:

// app.js
// ======
var tools = require('./tools');
console.log(typeof tools.foo); // => 'function' - доступно
console.log(typeof tools.bar); // => 'function' - доступно
console.log(typeof tools.zemba); // => undefined - недоступно

Функция zemba не экспортируется, поэтому ее тип будет undefined. Чтобы сделать функцию доступной, ее нужно добавить в объект module.exports.

2

Вы можете обойтись без создания новых функций или модулей. Вам просто нужно выполнить модуль, который вы вызываете, если вы не хотите использовать пространство имен.

в tools.js

module.exports = function() { 
    this.sum = function(a, b) { return a + b };
    this.multiply = function(a, b) { return a * b };
    // и т.д.
}

в app.js

или в любом другом .js, например, myController.js:

вместо

var tools = require('tools.js');

что заставляет вас использовать пространство имен и вызывать функции как tools.sum(1, 2);

вы можете просто вызвать

require('tools.js')();

и тогда сможете использовать

sum(1, 2);

В моем случае у меня есть файл с контроллерами ctrls.js:

module.exports = function() {
    this.Categories = require('categories.js');
}

И я могу использовать Categories в любом контексте как публичный класс после вызова require('ctrls.js')().

1

Если вам нужно создать два JavaScript файла, вот простой пример, как это сделать.

  1. Создайте файл cal.js с следующем содержимым:
// File cal.js
module.exports = {
    sum: function(a, b) {
        return a + b;
    },
    multiply: function(a, b) {
        return a * b;
    }
};

Этот файл экспортирует объект с двумя методами: sum, который складывает два числа, и multiply, который их перемножает.

  1. Создайте главный файл app.js с кодом:
// File app.js
var tools = require("./cal.js");
var value = tools.sum(10, 20);
console.log("Value: " + value);

В этом файле вы импортируете cal.js и используете метод sum, чтобы сложить два числа (10 и 20), а затем выводите результат в консоль.

Консольный вывод

При выполнении app.js в консоли вы увидите следующий результат:

Value: 30

Таким образом, вы создали два файла JavaScript и использовали один из них для выполнения математической операции и вывода результата.

0

Вы можете создать два файла, например, app.js и tools.js, чтобы продемонстрировать, как использовать модули в Node.js. Вот примеры кода для этих файлов.

app.js

const tools = require("./tools.js");

var x = tools.add(4, 2);
var y = tools.subtract(4, 2);

console.log(x);
console.log(y);

tools.js

const add = function(x, y) {
    return x + y;
}

const subtract = function(x, y) {
    return x - y;
}

module.exports = {
    add,
    subtract
}

Вывод

Когда вы выполните app.js, вы получите следующий вывод в консоли:

6
2

Объяснение

  • В файле tools.js мы определяем две функции: add для сложения и subtract для вычитания. Затем мы экспортируем их с помощью module.exports, чтобы они могли использоваться в других файлах.

  • В файле app.js мы импортируем наши функции из tools.js с помощью require(). Затем мы вызываем эти функции с аргументами и выводим результаты в консоль.

Теперь вы можете использовать эти простые функции в своих проектах, подключая их из tools.js в любом другом файле.

0

Вот простое объяснение:

Содержимое файла Server.js:

// Подключаем публичные функции из файла 'helpers.js'
var helpers = require('./helpers');

// Предположим, что это данные, которые пришли из базы данных или откуда-то еще
var databaseName = 'Уолтер';
var databaseSurname = 'Уайт';

// Используем функцию из 'helpers.js' в главном файле server.js
var fullname = helpers.concatenateNames(databaseName, databaseSurname);

Содержимое файла Helpers.js:

// 'module.exports' — это особенность node.js, она не работает с обычным JavaScript
module.exports = 
{
  // Это функция, которая будет вызываться в главном файле server.js
  // Параметры 'name' и 'surname' будут переданы в функцию
  // когда функция будет вызвана в главном файле.
  // Пример: concatenateNames('Джон', 'Доу');
  concatenateNames: function (name, surname) 
  {
     var wholeName = name + " " + surname;

     return wholeName;
  },

  sampleFunctionTwo: function () 
  {

  }
};

// Приватные переменные и функции, которые будут недоступны вне этого файла
var privateFunction = function () 
{
};

Таким образом, в вашем коде происходит подключение отдельных функций из файла 'helpers.js' в 'server.js', что позволяет организовать код и использовать функции в разных частях вашего проекта.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь