Асинхронное разбиение кода в Webpack на основе маршрутов загружает все фрагменты всех маршрутов.

Я включил чанкинг на основе маршрутов в своем приложении реакции.

Я использовал require.ensure

require.ensure([], function(require) {
require('./Component1');
});

Мое приложение содержит два маршрута / home и / pro

Вот мой route.js

        const React = require('react');
        const ReactRouter = require('react-router');
        const Router = ReactRouter.Router;
        const Route = ReactRouter.Route;
        const browserHistory = ReactRouter.browserHistory;


        var ProHomeContainer = "";
        if (typeof (require.ensure) == "function") {
            ProHomeContainer = require.ensure([], function (require) {
                require('./containers/ProHomeContainer.js');
        },"Home");
        } 

        var HomeContainer = "";
        if (typeof (require.ensure) == "function") {
            HomeContainer = require.ensure([], function (require) {
                require('./containers/HomeContainer.js');
        },"ProHome")
        } 

        export const routes = (
        <Router history={browserHistory} >
            <Route path={'/home'} getComponent={(nextState, callback) => {
                    if (typeof (require.ensure) == "function") {
                        require.ensure([], (require) => {
                            callback(null, require('./containers/HomeContainer.js'));

                        }, "Home")
                    } else {
                        callback(null, require('./containers/HomeContainer.js'), "Home");
                    }
            } } />
            <Route path={'/pro'} getComponent={(nextState, callback) => {
                    if (typeof (require.ensure) == "function") {
                        require.ensure([], (require) => {
                            callback(null, require('./containers/ProHomeContainer.js'));

                        }, "ProHome")
                    } else {
                        callback(null, require('./containers/ProHomeContainer.js'));
                    }
            } } />
        </Router >
        );

Webpack идентифицирует require.ensure и создает отдельный кусок для / home и / pro

Home.js и ProHomejs соответственно.

Теперь проблема в том, что когда я открываю / home, он должен загружать только Home.js (кусок /home), но он также загружает и ProHome.js.

Если это так, то нет ли пользы от использования чанкинга на основе маршрута?

Есть ли лучший способ маршрутизации на основе чанкинг? Пожалуйста, укажите правильные ресурсы

0 ответов

Другие вопросы по тегам