JS:反应和全局命名空间污染

时间:2014-03-19 08:05:42

标签: javascript namespaces reactjs

我正在考虑在新网站中使用react,我仍然想知道如何使用react组件处理全局命名空间。例如,如果我像这样定义几个React组件:

var MySlider = React.createClass({ // snip });
var MyAlert = React.createClass({ // snip });
var MyDropdown = React.createClass({ // snip });

渲染组件如下所示:

React.renderComponent(
    <MySlider />,
    document.getElementById('content')
);

但是,我更喜欢命名我的组件以避免污染全局命名空间。

var Namespace = {};
Namespace.MySlider = React.createClass({ // snip });

在渲染方面,由于命名空间,我找不到组件。

React.renderComponent(
    <Namespace.MySlider />, // component is not found
    document.getElementById('content')
);

我在这里缺少什么?只是忽略全局名称空间污染或者是否有可能命名组件?

谢谢!

2 个答案:

答案 0 :(得分:10)

这不完全是一个React JS问题,因为任何大型JavaScript代码库都必须处理模块加载。我建议在JavaScript中开始使用命名空间,而不是使用模块加载器。

你会对此有很多意见,但请看一些广泛使用的模块加载器:

答案 1 :(得分:6)

这段代码很有用。

React.renderComponent(
    Namespace.MySlider(),
    document.getElementById('content')
);

有关详细信息,请参阅documentation