предисловие
существуетVue
,React
Эпоха популярности в сочетании с различными фреймворками脚手架
, надо сказать, сейчасФронтенд-инжинирингНе меньше, чем любое конечное развитие
Благодаря постоянному совершенствованию интеграции различных строительных лесов весь проект теперь может быть разработан практически с нулевой конфигурацией, широко известной как傻瓜式开发
Наш код глуп?
Не делайте!!
Глупее становятся люди, которые разрабатывают код
Строительные леса не отвечают всем потребностям развития
Например, когда нам нужно разработать официальный веб-сайт компании, учитывая SEO веб-сайта, нам все равно может понадобиться использовать нативную разработку js.Режим разработки примерно следующий:
Модель разработки очень примитивна, по сути фронт и бэкенд не разделены и не развиваются
Хотя можно использоватьрендеринг на стороне сервера, а такжепредварительный рендерингоптимизировать этот метод разработки, то есть добитьсяFront-end и back-end раздельная разработка, с учетом сайтаSEO, но вы все равно можете столкнуться с некоторыми проблемами
- В силу исторических причин свергнуть и переделать не реально
- Рендеринг на стороне сервера увеличивает затраты на разработку технологий
- По крайней мере, сервер должен построить среду узла
- ...
В это время, возможно, нам придется вернуться к режиму развития древних времен.
использоватьwebpack
Оптимизация исходного процесса разработки
то есть использоватьwebpack
Упаковка многостраничных приложений позволяет нам легко разрабатывать одностраничные приложения и удовлетворять потребности в разработке проектов.
Самое главное - почеркwebpack
Конфигурация может дать вам более глубокое понимание интерфейсной разработки,让开发代码的人越来越聪明,让代码变得越来越傻
рабочий процесс webpack (на местном языке)
Абстрактно, этоМинутаа такжеа также
- При разработке делайте код более'близкий к людям'
В рамках разработки модуля мы можем разделить код, разбить его на компоненты, повысить эффективность разработки и упростить поддержку кода.
- После упаковки дайте код больше«Профессиональный компьютер»
После упаковки соберите код так, чтобы его мог распознать браузер, сделав при этом код достаточно небольшим и достаточно надежным.
Имея в виду эту идею, мы можем начать строитьwbpack
охватывать
Структура каталогов проекта
Структура файла проекта в среде разработки
После упаковки мы хотим, чтобы структура проекта была достаточно чистой.
многостраничная конфигурация webpack
- Предупреждение о множественном коде!
- Полный исходный код был выпущенgithub, с полными комментариями, добро пожаловать прямо на gaihub, чтобы увидеть исходный код
- Если полезно, добро пожаловать в звезду, большое спасибо
Демонстрация эффекта
- среда разработки
- Среда сборки
Входная конфигурация
Чтобы позволить нам быстро увидеть эффект страницы, мы сначала записываем запись в два файла, чтобы указать, что пакет является многостраничным (позже он будет изменен на автоматическое чтение)
- entry
module.exports = {
entry: {
index: path.join(__dirname, "../src/pages/index/index.js"),
user: path.join(__dirname, "../src/pages/user/user.js"),
}
}
Экспорт конфигурации
- output
output: {
path: path.resolve(__dirname, "../dist"), // 打包路径
filename: assetsPath("js/[name]_[hash:7].js"), // 文件名称
publicPath: "./",
},
- использовать
html-webpack-plugin
, динамически генерировать соответствующий шаблон
Точно так же здесь мы сначала записываем в index и user два шаблона страниц.
const hwp = [
new HtmlWebpackPlugin({
filename: "index.html",
template: resoveDev("/index/index.html"),
title: "首页",
chunks: ["index", "common"],
minify: {
removeComments: false,
collapseWhitespace: false,
removeAttributeQuotes: false,
//压缩html中的js
minifyJS: false,
//压缩html中的css
minifyCSS: false,
},
}),
new HtmlWebpackPlugin({
filename: "user.html",
template: resoveDev("/user/user.html"),
title: "我的",
chunks: ["user", "common"],
minify: {
removeComments: false,
collapseWhitespace: false,
removeAttributeQuotes: false,
//压缩html中的js
minifyJS: false,
//压缩html中的css
minifyCSS: false,
},
}),
];
// 在插件中使用
plugins:[...hwp]
css обработка
webpack
не поддерживает обработку, кромеjs
Любой файл, кромеloader
иметь дело с
...
module:{
rules:[
{
test: /\.less$/,
use: [
{
options: {
publicPath: "../../", // 配置css里面的路径
},
},
"css-loader",
"less-loader",
],
},
]
}
...
webpack
По умолчанию это будетcss
также упакован вjs
Внутри нам также нужно использоватьmini-css-extract-plugin
Пучокcss
Извлечь в отдельные файлы
...
module:{
rules:[
{
test: /\.less$/,
use: [
loader: MiniCssExtractPlugin.loader,
{
options: {
publicPath: "../../", // 配置css里面的路径
},
},
"css-loader",
"less-loader",
],
},
]
}
...
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
plugins:[new MiniCssExtractPlugin()]
Обработка изображения
использование обработки изображенийurl-loader
module:{
rules:[
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: "url-loader",
options: {
limit: 1000, // 1kb一下的图片变成base64格式
name: "[name]_[hash:7].[ext]", // 给图片添加hash
outputPath: "./static/images", // 图片输出路径
},
},
]
}
Здесь следует отметить, чтоurl-loader
может только справитьсяcss
Картинки в файле, нам также нужно использоватьhtml-loader
иметь дело сhtml
фотографии внутри, ноhtml-loader
а такжеhtml-webpack-plugin
есть конфликт, поэтому мы не можемwebpack
внутренняя сторонаhtml-loader
можно настроить только при использованииhtml
Компромисс при использовании изображений в
<img src=" <%= require('@/assets/images/logo.png' )%>" alt="" />
а такжеhtml-loader
Важным использованием html является то, что он может реализовать модульность html.
<body>
<!-- 加载公用html -->
<%= require('html-loader!../common/header.html') %>
</body>
Различие между средами разработки и производственной средой
Мы используем три файла для настройкиwebpack
существуетpackage.json
Добавьте соответствующие команды в файл, разные команды используют разные файлы конфигурации
"scripts": {
"dev": "webpack-dev-server --inline --progress --config config/webpack.dev.config.js --open",
"builds": "webpack --config config/webpack.pro.config.js",
}
существуетwebpack.dev.config.js
а такжеwebpack.pro.config.js
объединить
// base 为基础文件 pro 为生成环境配置
merge(base, pro)
Последующая оптимизация
Первая версия, которой мы следуемКод запускается первымВ принципе, оптимизация вебпака не производилась, и следующая версия будет обновлена
-
- По соглашению маршруты генерируются автоматически
-
-
js
,css
изtree-shaking
оптимизация
-
-
-
eslint
+prettier
Конфигурация
-
-
- Это инструмент командной строки, который разделен на терминал ПК и мобильный терминал.Вы можете выбрать сами при использовании командной строки для создания проекта.
наконец
Не забудьте поставить лайк 😉