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

alg*_*lgi 7 javascript namespaces reactjs

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

var MySlider = React.createClass({ // snip });
var MyAlert = React.createClass({ // snip });
var MyDropdown = React.createClass({ // snip });
Run Code Online (Sandbox Code Playgroud)

渲染组件将如下所示:

React.renderComponent(
    <MySlider />,
    document.getElementById('content')
);
Run Code Online (Sandbox Code Playgroud)

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

var Namespace = {};
Namespace.MySlider = React.createClass({ // snip });
Run Code Online (Sandbox Code Playgroud)

在渲染方面,我猜想由于命名空间而找不到组件.

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

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

谢谢!

Ros*_*len 10

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

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


hip*_*pis 6

这段代码很有用.

React.renderComponent(
    Namespace.MySlider(),
    document.getElementById('content')
);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档.