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. 百度MIP技术快速入门(上)

    前言 「本文假定读者已经有初级的前端开发知识,包括HTML.CSS.」 百度在一年前推出了称为 MIP(Mobile Instant Pages)的前端开发组件,主要目的是加速移动端网页的显示.MIP ...

  2. Java管道流学习

    管道流 作用:用于线程之间的数据通信 管道流测试:一个线程写入,一个线程读取 import java.io.IOException; import java.io.PipedInputStream; ...

  3. 【leetcode】726. Number of Atoms

    题目如下: 解题思路:我用的是递归的方法,每次找出与第一个')'匹配的'('计算atom的数量后去除括号,只到分子式中没有括号为止.例如 "K4(ON(SO3)2)2" -> ...

  4. Apache Flink 进阶(六):Flink 作业执行深度解析

    本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink Contributor.网易云音乐实时计算平台研发工程师岳猛分享.主要分享内容为 Flink Job 执行作业的 ...

  5. spring-boot的helloWorld详解

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 3.2.5 2.Maven Plugin管理 pom.xml配置代码: <project xml ...

  6. 前端自动化-gulp入门

    前不久本人写了一篇关于gulp安装和配置的文章,其实当时还是懵逼的状态,但是今天再次温习了一遍,感觉对整个流程有个整体的理解了,下面以一个实例给大家分享下我的经验供参考和学习. 1.首先安装nodej ...

  7. 第二章--k-近邻算法(kNN)

    一.k-近邻算法(kNN) 采用测量不同特征值之间的距离方法进行分类 工作原理: 存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系.输 ...

  8. Delphi TextFile读取文本文件

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. Javac编译找不到符号,报错

    Javac编译找不到符号 报错 找不到符号 如果是两个.java有调用关系,需要同时编译 首先我检查了下代码,发现并没有问题,然后将A.java文件的内容复制到D.java中,发现程序能正常运行,而之 ...

  10. 26 October in 614

    Practice tower 有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \ ...