Запуск "module.exports = function(foo){...}" в узле vm2

Я новичок в Node и виртуальной машине VM2. В документации по последнему приведен пример его использования:

let functionInSandbox = vm.run("module.exports = function(who) { console.log('hello '+ who); }");
functionInSandbox('world');

Вопрос: что это на самом деле делает?

Во-первых, почему module.exports здесь используется вообще? Т.е. почему бы не опустить это как показано ниже?

let functionInSandbox = vm.run("function(who) { console.log('hello '+ who); }");
functionInSandbox('world');

Во-вторых, еще один способ взглянуть на это: в программировании обычного узла это знание начинающего, что require(inc) используется в одном файле для присвоения переменной, что в другом файле (выбирается inc), присваивается module.exports, Как это отличается от вышеуказанного использования с vm2?

Конкретно: есть require(...) быть неявно вызванным в вышеупомянутом? Как можно определить несколько модулей (как указано выше) и сослаться в одной песочнице?

Трудно знать, какие вопросы даже задавать - на самом деле, я просто надеюсь объяснить, каким образом module.exports можно использовать с vm2 способами, которые отличаются от обычного программирования узлов, выделяя различия.

0 ответов

Другие вопросы по тегам