javascript - 如何在 NodeJs 中在运行时动态创建和调用函数
问题描述
这就是我在运行时向窗口对象动态添加函数的方式:
(function (myPluginModuleLib, $, undefined) {
myPluginModuleLib.myModuleMethod = (varArgs) => {
console.log('Dynamic Call : ' + varArgs);
};
}(window.myPluginModuleLib = window.myPluginModuleLib || {}, jQuery));
然后我可以随时全局调用它:
window.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');
在NodeJs中是否有类似的方法可以做到这一点?我想在内存中添加一个函数。例如,在主app.js中,这样我就可以按需调用它,而不是总是从字符串构造它:
let myModuleMethodString = 'var myModuleMethod = (varArgs) => { console.log("Dynamic Call : " + varArgs) }';
myModuleMethodString = myModuleMethodString.slice(myModuleMethodString.indexOf("{") + 1, myModuleMethodString.lastIndexOf("}"));
let myModuleMethod = new Function("varArgs", 'console.log("Dynamic Call : " + varArgs)');
try {
myModuleMethod('HELLO WORLD PARAMS!');
} catch (error) {
console.log(error);
}
谢谢大家。
解决方案
如果您想继续使用此解决方案,则可以使用 Node JS 中的全局命名空间,类似于浏览器中的窗口,但不建议使用全局命名空间。
例子:
global.myPluginModuleLib = {
myModuleMethod : (varArgs) => {
console.log('Dynamic Call : ' + varArgs);
}
};
global.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');
推荐阅读
- java - 保存新形式的自定义 ArrayList、SharedPreferences
- java - org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有“org.apache.ibatis.session.SqlSessionFactory”类型的合格bean
- nginx - NGINX + Vue HTML 模式配置给出 404
- ios - Swift iOS 应用程序最佳方法 - 带输入的预订
- php - 将 Laravel 应用程序部署到 Heroku 时链接不起作用
- java - 在 Maven 中编译问题
- javascript - brunch 生成的外部 Js 文件不起作用
- javascript - webpack 4 uglifyjs 没有缩小和压缩
- android - Android Studio 未打开任何格式正确的项目类文件
- html - 需要行跨度和列跨度的表格设计