Javascript 如何检测节点中的任意表达式?
我需要以编程方式将函数调用包装到函数中,例如,我需要转换此函数Javascript 如何检测节点中的任意表达式?,javascript,node.js,Javascript,Node.js,我需要以编程方式将函数调用包装到函数中,例如,我需要转换此函数 define('src/libs/require.js', ['src/common/bundle.js'], function (imports) { debugger; test = imports.test; imports.fmtNow(); self.postMessage({ method: 'injected', message: `${performan
define('src/libs/require.js', ['src/common/bundle.js'], function (imports) {
debugger;
test = imports.test;
imports.fmtNow();
self.postMessage({
method: 'injected',
message: `${performance.now().fmt()}\tloaded:\tsrc/common/bundle.js`
});
});
进入这个
function inject() {
define('src/libs/require.js', ['src/common/bundle.js'], function (imports) {
debugger;
test = imports.test;
imports.fmtNow();
self.postMessage({
method: 'injected',
message: `${performance.now().fmt()}\tloaded:\tsrc/common/bundle.js`
});
});
}
define调用可以在模块中的任何位置,第三个参数可以包含任何有效的js函数定义或表达式(其计算结果为函数)
我想我可以使用UglifyJS的(和谐版)来实现这一点,我可以构建一个AST,并发现表达式没有问题。现在我必须弄清楚如何操作AST来添加包装器,然后写出修改后的代码
这是正确的方法还是更简单的方法?什么。你为什么这么做?你想实现什么?@naomik我想通过编程隔离表达式并将其包装到函数中。不清楚?对,但为什么?这听起来很像XYproblem@naimik我正在修改一个汇总插件,以允许我将
导入到基于blob的web worker中。所以,我需要在绑定过程中转换一些源代码。我原以为在一个函数中包装一些任意表达式在绑定器中很常见。如果不是的话,我会找到另一种方法。也许你只是在问一个Z问题?“我正在修改一个汇总插件,以允许我导入到一个基于blob的web worker中。因此,我需要在绑定过程中转换一些源代码”-此上下文非常重要,可以帮助人们理解你为什么要尝试这样做。这是您的实际任务,可能有更好的/惯用的方法来完成它,而不是您最初尝试的方法。你应该用这个上下文更新你的问题,但是很抱歉我不能帮你进一步做什么。你为什么这么做?你想实现什么?@naomik我想通过编程隔离表达式并将其包装到函数中。不清楚?对,但为什么?这听起来很像XYproblem@naimik我正在修改一个汇总插件,以允许我将导入到基于blob的web worker中。所以,我需要在绑定过程中转换一些源代码。我原以为在一个函数中包装一些任意表达式在绑定器中很常见。如果不是的话,我会找到另一种方法。也许你只是在问一个Z问题?“我正在修改一个汇总插件,以允许我导入到一个基于blob的web worker中。因此,我需要在绑定过程中转换一些源代码”-此上下文非常重要,可以帮助人们理解你为什么要尝试这样做。这是您的实际任务,可能有更好的/惯用的方法来完成它,而不是您最初尝试的方法。您应该在此背景下更新您的问题,但很抱歉,我无法进一步帮助您