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

Can I expose a commonjs module object in the global namespace?

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

在一些孤立的情况下,我们需要从遗留代码中的一个 commonjs 模块访问对象。有什么办法可以做到这一点……是的,我认为这很糟糕。我们最终会将所有代码迁移到 commonjs 模块,但这是权宜之计。

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

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

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

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

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