webpack本身只支持处理JavaScript,其他的文件,如css img less是不识别的,所以才会有loader这个东西,它就是可以使webpack能够处理其他非js文件的拓展程序

首先我们在入口文件中引入css文件,我这里是index.js

import "./style.css"

然后下载

npm i style-loader -s -d
npm i css-loader -s -d

为什么要使用style-loader 先介绍以下这两个的用处

style-loader:使用<style>将css-loader内部样式注入到我们的HTML页面

 css-loader: 加载.css文件

然后在webpack.config中配置

const path = require("path");//这个是node.js自带的路径模块 可以有效的防止不同机器上路劲出现差异问题

module.exports = {
mode: 'production',
entry: {
app: __dirname + '/src/index.js'
},
output: {
path: __dirname + '/build',//指定输出文件 的地址
filename: "./js/[name].js",//以入口文件的key值作为输入文件名 列入entry中是{app:"./src/index.js"} 那么对应的输出文件就是 app.js,这个只能是在entry参数为object时使用
},
module: {//模块
rules: [//规则
// {
// test: /\.css$/,//正则表达式,当匹配到.css结尾的文件时。使用以下loader
// use: [
// 'style-loader',//再使用 style-loader 顺序从下往上
// 'css-loader'//先使用 css-lloader
// ]
// },
//也可以配置使用 推荐
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules:true,//开启css模块化
}
}
]
}
]
} }

loader的基本使用就是这样。这样打包之后,发现所有的css样式,都添加到了html页面的<style>标签里面,这样在开发模式下是ok,但是生产模式下就不友好了,我们是不是可以将css提取出来放在外部文件中呢,答案是当然的。使用插件就可以,下一章,会有详细的记录。

常用的loader有

图片处理

file-loader

url-loader

npm i file-loader -s -d
npm i url-loader -s -d

在配置文件中配置

const path = require("path");//这个是node.js自带的路径模块 可以有效的防止不同机器上路劲出现差异问题
const webpack = require("webpack");
module.exports = {
mode: 'production',
entry: {
app: __dirname + '/src/index.js'
},
output: {
path: __dirname + '/build',//指定输出文件 的地址
filename: "./js/[name].js",//以入口文件的key值作为输入文件名 列入entry中是{app:"./src/index.js"} 那么对应的输出文件就是 app.js,这个只能是在entry参数为object时使用
},
module: {//模块
rules: [//规则
{
test: /\.css$/,//正则表达式,当匹配到.css结尾的文件时。使用以下loader
use: [
'style-loader',//再使用 style-loader 顺序从下往上
'css-loader'//先使用 css-lloader
]
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[hash].[ext]',//定义打包后的图片文件名
outputPath: "/img2",//定义打包后的图片放在那个目录,默认是/dist下(这里的dist是默认的输入地址,具体由output中的path指定)
publicPath: "./img",//在编写css代码的时候你使用的是background: url('./src/img0.png') 那么在打包之后输出的css代码就是background: url('builde_img.png'),而你输入的
//文件在img/builde_img_png下,这样肯定是找不到的,所以要给它配置一个发布地址,如例子,在打包后的输出的css文件中就是background: url('./img/builde_img.png')
}
}
]
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: "url-loader",//url-loader其实和file-loader一样都是又来处理图片等文件的loader,不过url-loader有一个功能,就是可以将指定的小的图片,
//转化base64,而大于这个大小的图片,则有file-loader处理,所以url-loader依赖与file-loader,经常的是将两个组合使用,注意使用url-loader的时候,
// 不要也不需要在rules中配置file-loader,否则会出现冲突导致转化失败
options: {
limit: 300000,//最小3k的图片,将转化成base64
}
}
]
}
]
}
}

以上就是常用loader使用的一个例子,常用loader还有很多,像是处理less的less-loader,html的html-loader等,使用方法都是大同小异,只是optins不同罢了,详情可以去webpack-loader去了解,本章不在叙述,下一章,记录webpack-plugin的使用

webpack 学习4 使用loader 以及常用的一些loader的更多相关文章

  1. webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件

    一 .webpack学习环境准备: 1:window系统 2:安装node.js  官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...

  2. webpack学习笔记—webpack安装、基本配置

    文章结构: 什么是webpack? 安装webpack 'webpack基本配置 一.什么是webpack? 在学习react时发现大部分文章都是react和webpack结合使用的,所以在学reac ...

  3. webpack学习

    // 一个常见的`webpack`配置文件 const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-we ...

  4. webpack学习入门

    写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段 ...

  5. Webpack学习-Webpack初识

    一.前言 webpack 到底是个什么东西呢,看了一大堆的文档,没一个能看懂的,因为上来就是给个module.exports 然后列一大堆配置,这个干啥,那个干啥,没一点用.但凡要用一个东西,一个东西 ...

  6. Webpack 学习笔记总结

    Webpack安装 Linux系统默认已经安装了node&npm,但版本比较低,而且没法升级,可以重新下载Node然后通过软链接替换系统自带的node和npm; ln -s /path_to/ ...

  7. 更博不能忘——webpack学习笔记

    webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...

  8. 【原】webpack学习笔记

    之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ...

  9. webpack学习(入门基础)

    webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...

随机推荐

  1. 理解Java构造器中的"this"

    Calling Another Constructor if the first statement of a constructor has the form this(...), then the ...

  2. vue.js 导出JSON

    cnpm install file-saver --save <template> <div class="hello"> <button @clic ...

  3. Security基础(六):部署Zabbix监控平台、配置及使用Zabbix监控系统、自定义Zabbix监控项目、实现Zabbix报警功能

    一.部署Zabbix监控平台 目标: 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 在监控服务器上安装LAMP环境    修改PHP配置文件,满足Zab ...

  4. The mook jong

    The mook jong Accepts: 506 Submissions: 1281 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...

  5. vue和php-前后台交互

    vue和php-前后台交互 前端主要代码: <template> <div class="main-member-info"> <form @subm ...

  6. [杂题]:B/b(二分答案)

    题目传送门(内部题53) 输入格式 第二行$2$个整数表示$n,m$.接下来$m$行每行两个整数,描述一个点对$(x_i,y_i)$. 输出格式 一个整数,表示最短距离. 样例 样例输入: 6 21 ...

  7. Navicat for Mysql 连接报错1251[已解决]

    因为mysql是8.0.11的版本,比较新的mysql采用新的保密方式所以旧的修改密码的方式似乎不能用, 新版本改密码方式: use mysql; ALTER USER 'root'@'localho ...

  8. Asynchronous C# server[转]

    It hasn't been thoroughly tested, but seems to work OK. This should scale pretty nicely as well. Ori ...

  9. Vue-随笔小记

    注:本文属个人随笔记录,如有错误请大家多多指正 1.vue.nextTick([callback,context]) 参数: {function}[context] {Object}[context] ...

  10. Python笔记(十一)_匿名函数与map()、filter()

    匿名函数 无需显式定义函数名,和函数过程,使代码更精简的lambda表达式 函数没有命名,不用担心函数名的冲突 冒号前面代表函数的参数,后面表示计算过程 >>>func=lambda ...