从全局浏览器范围访问 CommonJS 库中定义的变量

Access a variable defined in a CommonJS library from the global browser scope

我有一个 "browserified" 库,它定义了一些 React 组件,我想从 HTML 页面(由 Rails 应用程序提供)加载这些组件,然后实例化React 组件,由 Rails.

放置在页面内的一些数据提供

(大图是:我们有一个 TurboLinks 应用程序,我们想为非常具体的部分使用一些 React 组件,需要更多的反应性。
Rails页面将加载 React 运行时和所需的应用组件库,然后生成最小的原始 JS 以根据需要实例化 React 组件)

我发现的所有方法都是将外部库变量暴露给 my 库,但我想暴露 my 变量到全局浏览器范围。

我最终以一种相当丑陋的方式 (window.Stuff = Stuff;) 直接从 .jsx 源文件中导出 类,但我觉得这段代码有异味......

关于实现此类目标的更好方法有什么建议吗?

要么公开你的 browserify 包中的模块,例如:

browserify()
  .require('./whatever', {expose: 'whatever'})

然后从 Rails 页面 JS:

require('whatever');

或者:

像这样创建一个独立的 browserify 包:

browserify('./entry', {standalone: 'something'})

entry.js

module.exports = {
  whatever: require('./whatever')
};

然后从 Rails 页面 JS:

window.something.whatever;