NodeJS: Статический импорт возможен?
Короче вопрос:
Есть ли способ статически импортировать функции другого файла JS в NodeJS? (Как статический импорт Java?)
Пример того, что я хотел бы сделать:
У меня есть файл m1.js
который содержит функции:
function add(x,y) { return x + y }
exports.add = add
Тогда у меня есть файл app.js
который импортирует m1.js
:
m1 = require('./m1')
var result = m1.add(3,4)
Теперь, что я хотел бы сделать, это импортировать функции m1.js
так что я могу звонить им, без необходимости префикса звонков с m1.*
:
m1 = require('./m1')
var result = add(3,4) // instead of m1.add(3,4)
Что я пробовал до сих пор:
Я попробовал следующее, в файле m1.js
:
function add(x,y) { return x + y }
exports.static = function(scope) { scope.add = add }
и попытался импортировать m1.js
в app.js
как следует, но не смог найти add(x,y)
:
require('./m1').static(this)
var result = add(3,4)
1 ответ
Вы были близки с вашей попыткой. Одно небольшое изменение, которое вы должны сделать, это заменить this
с global
когда static
называется:
require('./m1').static(global)
var result = add(3,4)
Из документации:
Глобальный
- {Object} Объект глобального пространства имен.
В браузерах область верхнего уровня является глобальной областью действия. Это означает, что в браузерах, если вы находитесь в глобальной области видимости
var something
определит глобальную переменную. В Node все по-другому. Область верхнего уровня не является глобальной областью;var something
внутри модуля Node будет локальным для этого модуля.