Несчастье приходит на спину удачи, где удача приходит с неудачей. - Лао-цзы
Введение
bundle,module,chunkВсе они являются терминами в веб-пакете. Ниже приводится введение в их определения и то, как они появились.
Bundle
BundleПакеты, созданные из нескольких различных модулей, содержат версии окончательных исходных файлов, которые уже были загружены и скомпилированы. **Разделение пакетов**. Этот процесс обеспечивает оптимизированный метод сборки, позволяющий веб-пакету создавать несколько пакетов для приложения. Чистый эффект заключается в том, что когда какой-либо другой пакет изменяется, другие пакеты, которые не зависят друг от друга, могут остаться незатронутыми, что уменьшает объем кода, который необходимо повторно опубликовать, поэтому он повторно загружается клиентом и использует кэширование браузера.
Module
**Модуль** предоставляет дискретные функциональные блоки, площадь которых меньше площади полной программы. Хорошо написанные модули обеспечивают прочные границы абстракции и инкапсуляции, так что каждый модуль в приложении имеет согласованную структуру и четкое назначение.Разрешение модуляМодуль может использоваться как зависимый модуль другого модуля, распознаватель — это библиотека (библиотека), используемая, чтобы помочь абсолютный путь модуля не найден, модуль будет вresolve.modulesПоиск во всех каталогах, указанных в .
Chunk
ChunkЭто специальный термин веб-пакета, используемый внутри для управления процессом сборки. Пакет состоит из фрагментов, которые бывают нескольких типов (например, входной фрагмент (entry chunk) и дочерний фрагмент (child chunk)). Обычно фрагменты будут напрямую соответствовать выходному комплекту, но есть некоторые конфигурации, которые не имеют отношения один к одному. **Разделение кода** – это разделение кода на отдельные пакеты/фрагменты, которые вы можете загружать по требованию, а не загружать пакет, содержащий все. **Конфигурация** Файл конфигурации веб-пакета — это обычный файл JavaScript, который экспортируется как объект. Затем он обрабатывается веб-пакетом в соответствии со свойствами, определенными этим объектом.
Bundle VS Chunk VS Module
Начнем с определения и периода:
- "модуль"
(module)Всем знакомо такое понятие, какCommonJS 模块,AMD,ES6 Modulesмодуль -
chunkУказывает, что модуль сгенерирован, когда упаковка составлена имbundle - Упакованный исходный код
Мы просто создадим тот, который сейчас компилируетсяjsизwebpackконфигурации, шаги следующие:
- Создайте пустой файл и откройте его в текущей папке
bash or cmd. -
npm init -yгенерироватьpackage.json. - если вы установили
cnpm or yarnпросто выполнитьcnpm i webpack webpack-cli -D, Установитьwebpackупаковка. - Создайте
src,существуетsrcСоздано внутриchunk0.js,chunk1.js,common.js,index.js,style.cssи написать внутренний код - Создан в корневом каталоге проекта
webpack.config.js - прямо в
cmdвбегаетwebpack
Ниже приведен кодchunk0.js
export default function add(a, b) {
return a + b;
}
chunk1.js
export default function flow() {
return "flow";
}
common.js
export default function commonJs() {
return "commonJs";
}
index.js
import add from "./chunk0.js";
import commonJs from "./common";
console.log(add(1, 2));
console.log(commonJs());
webpack.config.js
module.exports = {
mode: "production", // 如果不添加就会警告
entry: {
index: "./src/index.js", // 一个入口文件
chunk1: "./src/chunk1.js" // 两一个入口文件
},
output: {
filename: "[name].bundle.js" // 出口文件
}
};
Эффект от бега следующий
Зная из приведенного выше кода,moduleэто код, который не был скомпилирован ранее,webpackгенерируется на основе отношения ссылки на файлchunkфайл, обработанный webpackchunkфайл, генерировать код, который запускается в браузереbundle.
Ссылаться на
Обязательно для собеседования! 5 самых запутанных знаний в webpack
Глубокое понимание упаковки и фрагментации Webpack (Часть 1)