我有一些允许合并命名空间的功能,非常类似于import
模块包含大量功能时(我公开了一个带有数十个组合器的 API)它var f = target.f;
为导出的每个项目生成很多
function getNamespace(name, exports){
var output='';
for(var item in exports){
output += 'var ' + item + ' = '+name+ '.'+item + ';';
}
return output;
}
和用法:
var paco = require('./paco.js');
eval(paco.getNamespace('paco', paco));
// instead of paco.between(paco.start(),paco.content(),paco.end())
between(start(), content(), end())
问题:
我有办法将评估“隐藏”到某个函数中吗?我既不想改变全局命名空间也不想调用vm.runInThisContext
,只需要在调用函数之后将一些局部变量添加到调用上下文中,类似于require
.
我的意思是我需要类似的东西
import('./paco');
// this should work like this
// var paco = require('./paco.js');
// var between = paco.between;
但在调用范围内没有全局突变,也没有 eval。