从全局浏览器范围访问 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;
我有一个 "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;