Запуск "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
способами, которые отличаются от обычного программирования узлов, выделяя различия.