Несчастье приходит на спину удачи, где удача приходит с неудачей. - Лао-цзы
Введение
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)