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

时间:2015-09-01 14:13:01

标签: javascript reactjs browserify commonjs browserify-shim

我有一个"浏览器"定义一些React组件的库,我想从HTML页面加载(从Rails应用程序提供),然后实现React组件,由Rails放在页面内的一些数据提供。

(总体情况是:我们有一个TurboLinks应用程序,我们希望将一些React组件用于非常特定的部分,需要更多的反应性。
Rails页面将加载React运行时和&所需的应用程序组件lib,然后生成最小的原始JS以根据需要实现React组件)

我发现的只是将外部libs变量暴露给我的 lib的方法,但我想将 我的 变量暴露给全局浏览器范围

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

关于更好地实现此类事情的任何建议?

1 个答案:

答案 0 :(得分:2)

在browserify包中公开模块,例如:

inspect

然后从Rails页面JS:

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

或者:

创建一个独立的browserify包,如下所示:

require('whatever');

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

entry.js

然后从Rails页面JS:

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