如何在运行中包含React jsx文件而不是一次性使用react-router?

时间:2015-05-12 19:50:06

标签: javascript reactjs react-router react-jsx

// This is straight from the overview.md in the react-router docs
var Router = ReactRouter;
var DefaultRoute = Router.DefaultRoute;
var Link = Router.Link;
var Route = Router.Route;
var RouteHandler = Router.RouteHandler;

var App = React.createClass({
    render: function () {
        return (
        <div>
            <header>
                <ul>
                    <li><Link to="inbox">Inbox</Link></li>
                    <li><Link to="calendar">Calendar</Link></li>
                </ul>
            </header>

            {/* this is the important part */}
            <RouteHandler/>
        </div>
        );
    }
});

var Inbox = React.createClass({
    render: function () {
        return (
            <div>
                This is the inbox
            </div>
        );
    }
});

var Calendar = React.createClass({
    render: function(){
        return (
            <div>
                This is the calendar
            </div>
        );
    }
});

var routes = (
    <Route name="app" path="/wish/" handler={App} >
        <Route name="inbox" handler={Inbox}/>
        <Route name="calendar" handler={Calendar}/>
        <DefaultRoute handler={Inbox}/>
    </Route>
);

Router.run(routes, Router.HistoryLocation, function (Handler) {
    React.render(
        <Handler/>,
        document.querySelector('#content')
    );
});

以上是一个超级简单的页面,当用户导航到它时导航收件箱组件和导航到日历组件时...但是,实际上页面可能包含多个组件和大量的jsx代码。 / p>

分解所有不同组件的最佳做法是什么,只在需要时下载相关文件,即在上面的简单示例中,只在用户请求时下载收件箱的代码(以及日历等?由于JSX文件本质上是视图,因此它似乎违背了我所知道的所有用户下载所有视图以仅查看一个视图。

我浏览了网上的例子,但只能看到100个组件的巨大文件...

1 个答案:

答案 0 :(得分:1)

不确定这是否是您正在寻找的,但最佳做法是将您的资源(文件)组合在一起,以消除大量小文件的无关HTTP请求。这里有一个平衡(一个5mb js文件可能应该分解成更小的文件),像webpack这样的工具可以帮助你管理这个。

您是否有特定的用例需要将其分解?