我可以在全局命名空间中公开commonjs模块对象吗?

时间:2015-12-16 18:20:42

标签: node.js webpack commonjs

我们正在使用nodejs / webpack构建react / flux应用程序,因此我们所有的新代码都是用commonjs模块编写的。

有一些孤立的案例,我们需要从遗留代码中的一个commonjs模块访问一个对象。有没有办法做到这一点...是的,我认为这是严重的。我们最终将把所有代码迁移到commonjs模块,但这是一个止损。

1 个答案:

答案 0 :(得分:0)

在遗留JS代码中(非使用CommonJS),在全局命名空间中创建一个函数:

/* Legacy code NOT using CommonJS */
function getCommonJSObject(obj) {
...
}

在CommonJS代码中,您可以测试此全局函数,如果它存在,请调用它,传递您需要访问的任何对象。

/* CommonJS object */
if(window['getCommonJSObject']){
  window.getCommonJSObject(obj);
}

通过这样做,我们仍然可以在我们的应用程序中遵循传统javascript代码中的流量模式。如果有更好的方法,请告诉我们。但这是一个方便的解决方法。