предисловие
Первоначальное намерение:Отсортируйте некоторые часто используемые загрузчики, чтобы поделиться с вами, чтобы вы могли легко понять, какой загрузчик использовать в каком сценарии. Если есть большие ребята, которые умеют тихо свайпать влево, не брызгайте, если не нравится.
Подходит для толпы:Первичная фронтенд разработка.
style-loader
использовать:дляcss
Скомпилированный стиль монтируется на страницуstyle
на этикетке.Необходимо обратить внимание на порядок выполнения загрузчика, стиль-загрузчик ставится первым, потому что загрузчик выполняется снизу вверх, и в конце вся компиляция завершается и монтируется на стиль.
Установить
cnpm i style-loader -D
настроить
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css/,
use: ["style-loader"]
}
]
}
}
css-loader
использовать:для идентификации.css
Файл, процессcss
должны сотрудничатьstyle-loader
Обычное использование, только установкаcss-loader
Стили не вступят в силу.
Установить
cnpm i css-loader style-loader -D
настроить
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css/,
use: [
"style-loader",
"css-loader"
]
}
]
}
}
sass-loader
использовать:css
Препроцессор, который мы часто используем при разработке проектов, пишемcss
Очень удобно, одно слово «палка».
Установить
cnpm i sass-loader@5.0.0 node-sass -D
настроить
index.js
import "index.scss"
index.scss
body {
font-size: 18px;
background: red;
}
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
"style-loader",
"css-loader",
"sass-loader"
],
include: /src/,
},
]
}
}
postcss-loader
использовать:Он используется для дополнения различных префиксов ядра браузера для стилей CSS, настолько удобен, что нам не нужно писать их вручную.
Установить
cnpm i postcss-loader autoprefixer -D
настроить
postcss.config.js
Если вы не записываете это в этот файл, вы также можете записать его вpostcss-loader
изoptions
внутри, запись в этот файл эквивалентна записи туда
module.exports = {
plugins: [
require("autoprefixer")({
overrideBrowserslist: ["> 1%", "last 3 versions", "ie 8"]
})
]
}
Атрибуты | описывать |
---|---|
> 1% | Браузер, которым пользуется более 1% населения мира |
> 5% in CN | Покрытие использования в определенных странах |
last 2 versions | Все браузеры совместимы до двух последних версий, отслеживаемых CanIUse.com. |
Firefox ESR | последняя версия фаерфокса |
Firefox > 20 | Указывает диапазон версий браузера |
not ie <=8 | Ориентация исключает некоторые версии |
Firefox 12.1 | Совместимость указанного браузера с указанной версией |
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
"style-loader",
"css-loader",
"sass-loader",
"postcss-loader"
],
include: /src/,
},
]
}
}
babel-loader
использовать: преобразование синтаксиса Es6+ в синтаксис Es5.
Установить
cnpm i babel-loader @babel/core @babel/preset-env -D
- babel-loader Это модуль, благодаря которому babel и webpack работают вместе.
- @bable/core Это основной модуль компилятора babel.
- @babel/preset-env Это официальный предустановщик, рекомендованный babel, который может автоматически добавлять необходимые плагины и исправления для компиляции кода Es6 в соответствии с пользовательской средой.
настроить
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets: [
['@babel/preset-env', { targets: "defaults"}]
]
}
}
},
]
}
}
ts-loader
использовать:Используется для настройки машинописного текста проекта
Установить
cnpm i ts-loader typescript -D
настроить
webpack.config.js
текущая конфигурацияts-loader
Он не вступит в силу, он просто скомпилирует и распознает.ts
файл, основной файл конфигурации находится вtsconfig.json
внутри
module.exports = {
module: {
rules: [
{
test: /\.ts$/,
use: "ts-loader"
},
]
}
}
tsconfig.json
{
"compilerOptions": {
"declaration": true,
"declarationMap": true, // 开启map文件调试使用
"sourceMap": true,
"target": "es5", // 转换为Es5语法
}
}
webpack.config.js
module.exports = {
entry: "./src/index.ts",
output: {
path: __dirname + "/dist",
filename: "index.js",
},
module: {
rules: [
{
{
test: /\.ts$/,
use: "ts-loader",
}
}
]
}
}
html-loader
использовать:Иногда мы хотим представитьhtml
Фрагмент кода страницы назначаетсяDOM
Используется содержимое элемента, который используется в данный моментhtml-loader
Установить
cnpm i html-loader@0.5.5 -D
Рекомендуется установить более раннюю версию, более старшая версия может быть несовместима и вызвать ошибку. Я установил версию 0.5.5 здесь
настроить
index.js
import Content from "../template.html"
document.body.innerHTML = Content
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.html$/,
use: "html-loader"
}
]
}
}
file-loader
использовать:Для работы с ресурсами типов файлов, такими какjpg
,png
и т.п. картинки. Возвращаемое значениеpublicPath
преобладать.
Установить
cnpm i file-loader -D
настроить
index.js
import img from "./pic.png"
console.log(img) // https://www.baidu.com/pic_600eca23.png
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|jpeg)$/,
use: [
{
loader: "file-loader",
options: {
name: "[name]_[hash:8].[ext]",
publicPath: "https://www.baidu.com"
}
}
]
}
]
}
}
url-loader
использовать: url-loader
Он также обрабатывает ресурсы типа изображения, но это то же самое, что иfile-loader
немного другой,url-loader
Вы можете установить другую операцию в зависимости от размера изображения. Если размер изображения больше указанного размера, изображение будет упаковано как ресурс, в противном случае изображение будет преобразовано вbase64
Строки объединяются вjs
в файле
Установить
cnpm i url-loader -D
настроить
index.js
import img from "./pic.png"
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|jpeg)$/,
use: [
{
loader: "url-loader",
options: {
name: "[name]_[hash:8].[ext]",
limit: 10240, // 这里单位为(b) 10240 => 10kb
// 这里如果小于10kb则转换为base64打包进js文件,如果大于10kb则打包到dist目录
}
}
]
}
]
}
}
html-withimg-loader
использовать:Когда мы компилируем изображения, мы используемfile-loader
а такжеurl-loader
, дваloader
все поискjs
Ресурсы файла изображения, ноhtml
Файлы внутри не будут просматриваться, поэтому мыhtml
Картинки в коробке тоже хочется упаковать, а потом использоватьhtml-withimg-loader
Установить
cnpm i html-withimg-loader -D
настроить
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>首页</title>
</head>
<body>
<h4>我蛙人</h4>
<img src="./src/img/pic.jpg" alt="">
</body>
</html>
webpack.config.js
Если путь src для img отображается в пакете как[Object Module]
, решение
- Понизить загрузчик файлов до 4.2.0
- Измените параметр параметров esModule на false.
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|jpeg)$/,
use: {
loader: "file-loader",
options: {
name: "[name]_[hash:8].[ext]",
publicPath: "http://www.baidu.com",
esModule: false
}
}
},
{
test: /\.(png|jpeg|jpg)/,
use: "html-withimg-loader"
}
]
}
}
vue-loader
использовать:для компиляции.vue
файл, если мы создадим его самиvue
проект готов к использованиюvue-loader
, Ниже приводится краткое описание, и я не буду здесь вдаваться в подробности.
Установить
cnpm i vue-loader@15.7.0 vue vue-template-compiler -D
- vue-loader используется для идентификации файлов .vue
- Излишне говорить, что vue распознает и поддерживает синтаксис vue.
- механизм рендеринга шаблонов синтаксиса vue-template-compiler {{}}
template
,script
,style
настроить
main.js
import App from "./index.vue"
import Vue from 'Vue'
new Vue({
el: "#app",
render: h => h(App)
})
index.vue
<template>
<div class="index">
{{ msg }}
</div>
</template>
<script>
export default {
name: 'index',
data() {
return {
msg: "hello 蛙人"
}
},
created() {},
components: {},
watch: {},
methods: {}
}
</script>
<style scoped>
</style>
webpack.config.js
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
entry: "./src/main.js",
output: {
path: __dirname + "/dist",
filename: "index.js",
},
module: {
rules: [
{
test: /\.vue$/,
use: "vue-loader"
}
]
},
plugins: [
new VueLoaderPlugin()
]
}
eslint-loader
использовать:Используется для проверки соответствия кода спецификации и наличия синтаксических ошибок.
Установить
cnpm i eslint-loader eslint -D
настроить
index.ts
var abc:any = 123;
console.log(abc)
.eslintrc.js
Вот несколько простых правил
module.exports = {
root: true,
env: {
browser: true,
},
rules: {
"no-alert": 0, // 禁止使用alert
"indent": [2, 4], // 缩进风格
"no-unused-vars": "error" // 变量声明必须使用
}
}
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.ts$/,
use: ["eslint-loader", "ts-loader"],
enforce: "pre",
exclude: /node_modules/
},
{
test: /\.ts$/,
use: "ts-loader",
exclude: /node_modules/
}
]
}
}
благодарный
Спасибо за чтение этой статьи, я надеюсь, что она может быть вам полезна, и если у вас есть какие-либо вопросы, пожалуйста, поправьте меня.
Я водолаз (✿◡‿◡), если вы считаете, что писать можно, ставьте лайк ❤.
Заинтересованные друзья могут присоединиться[Группа обмена развлекательными кругами]Приветствую всех для обсуждения
Писать нелегко,"Мне нравится" + "Смотрел" + "Ретвитнуть"Спасибо за вашу поддержку ❤
Хорошие статьи в прошлом
«Расскажите об использовании декораторов Decorator в проектах Vue»
«Поговорим о том, что такое CommonJs и Es Module и чем они отличаются»
«Карта с простым пониманием структуры данных»
«Знаете ли вы все приемы JavaScript, используемые в этих работах? 》
«Вы действительно понимаете функциональные особенности в ES6? 》