Оптимизация веб-пакетов splitChunks - генерируемые файлы веб-пакетов - PullRequest
0 голосов
/ 04 мая 2019

Я изучал стратегии комплектации веб-пакетов и нашел здесь довольно хорошее руководство: https://hackernoon.com/the-100-correct-way-to-split-your-chunks-with-webpack-f8a9df5b7758

Похоже, стоит рекомендовать, чтобы множество отдельных файлов (часто) было лучшим способом.Я последовал за этим и создал простой пакет, состоящий из файла js, который импортирует flexslider:

import "flexslider"
$(window).on('load', function () {
$('.flexslider').flexslider({

 });
});

Очевидно, что flexslider живет в папке node_modules, и моя конфигурация webpack настроена для разделения пакетов npm:

 runtimeChunk: 'single',
        splitChunks: {
            chunks: "all",
            maxInitialRequests: Infinity,
            minSize: 0,
            cacheGroups: {
                vendor: {
                    test: /[\\/]node_modules[\\/]/,
                    name(module) {
                        // get the name. E.g. node_modules/packageName/not/this/part.js
                        // or node_modules/packageName
                        const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];

                        // npm package names are URL-safe, but some servers don't like @ symbols
                        return `npm.${packageName.replace('@', '')}`;
                    },
                },
            }

Теперь для этого довольно простого сценария вот что сгенерировал веб-пакет

enter image description here

Игнорируйте core и main, поскольку это другие пакеты.

homeUS - это файл, который импортировал flexslider. Что касается моего HomeUS.html, должен ли я ссылаться на все эти js-файлы?или это что-то внутреннее в веб-пакете, и я просто ссылаюсь на HomeUs.js и flexslider.js, и все это просто «работает»?

Я предполагаю, что некоторые из них являются зависимостями flexslider. Как вы, вероятно, можете сказать, что я неэксперт по веб-пакетам - похоже, идея состоит в том, что возвращающимся посетителям нужно будет загружать отдельные пакеты npm только в том случае, если они изменились, а не в виде огромного пакета «вендора».

Спасибо

1 Ответ

1 голос
/ 04 мая 2019

Таким образом, вы должны ссылаться на все из них в HTML. Если вы хотите, чтобы js-файлы вызывали другие файлы и загружали их только по мере необходимости, посмотрите на динамический синтаксис import () Также, по моему мнению, этот вид хардкорного расслоения является излишним. Может быть, просто разделить их на куски и обычные куски.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...