什么是loader ?

  • 官方把它定义为:用来将一段代码转换成另一段代码的webpack插件。
  • 同时也给出了解释:虽然本质上说,loader也是插件,但因为webpack的体系中还有一个专门的名词就叫插件(plugins),为避免混淆,不再将loader与插件混淆来说。

经过一番学习,我把它理解为webpack辅助打包工具。

为什么会用到loader?

由于webpack默认只能处理JS文件,当我们想打包.png/.jpg…图片、CSS等一些js文件时,webpack是不知道该怎么去打包它们的。所以,loader的作用就是:当webpack打包文件,不知道该怎么办的时候,loader负责告诉它该怎么办,需要在webpack.config.js配置文件中告诉webpack如何执行打包不认识的文件。

看个例子:(用webpack打包图片)

项目目录如图所示:

在index.js中引入图片:

const Img = require('./aa.png');
const img = new Image();
img.src = Img;const root = document.getElementById('root');
root.append(img);

webpack.config.js配置文件:

// 在这里做打包配置
const path = require('path'); // 引入node的path模块(loader模块)
// Common.js语法
module.exports = {mode: 'development', // 默认模式为production,可不写,不写时打包运行命令行会有警告entry: {main: './src/index.js'},output: {filename: 'dist.js', // 打包之后的输出文件path: path.resolve(__dirname, 'dist') }
}

index.html中定义root容器:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><!-- 定义装图片的root容器 --><div id="root"></div><!-- 引入打包之后的js文件 --><script src="./dist.js"></script>
</body>
</html>

接下来执行打包语句:(使用npm scripts方式打包,配置为build,具体配置看"webpack学习篇2")

会发现命令行报错,并提示需要使用合适的loader来打包它。通过这个小例子,让我们知道,当我们打包图片文件时,webpack并不能像识别js一样识别它,需要我们借助额外的工具来告诉webpack如何打包它,所以,就需要我们安装loader, 配置loader打包规则:(步骤如下)

  • 安装file-loader: npm install file-loader -D
  • 在webpack.config.js配置文件中配置loader,所有的loader规则均需要配置到module中 (具体配置如下)
// 在这里做打包配置
const path = require('path'); // 引入node的path模块(loader模块)
// Common.js语法
module.exports = {mode: 'development', // 默认模式为production,可不写,不写时打包运行命令行会有警告entry: {main: './src/index.js'},module: {rules: [{ // 配置打包规则test: /\.(jpg|png|jpeg)$/, // 可打包的文件名后缀use: { loader: 'file-loader',options: { // 配置参数// 这种配置语法叫做:占位符name: '[name]_[hash].[ext]' // 使用图片的名字,并使用图片的后缀}}}]},output: {filename: 'dist.js', // 打包之后的输出文件path: path.resolve(__dirname, 'dist') }
}
  • 再次执行打包命令:
  • 成功后页面展示效果:

loader的作用?

经过一番尝试,图片文件在loader的辅助下,被打包成功,所以我们说loader是webpack的打包辅助工具。在webpack不知道该怎么打包某文件时,我们可以借助loader工具告诉webpack该如何进行打包。

到此分享结束,希望和大家一起学习~进步

什么是loader? (webpack学习篇4)相关推荐

  1. Hot Module Replacement热更新(webpack学习篇9)

    模块热替换(HMR - Hot Module Replacement)作用:是指在应用程序运行过程中替换.添加或删除模块,而无需重新加载整个页面.主要是通过以下几种方式,来显著加快开发速度: 保留在完 ...

  2. webpack原理篇(六十二):实战开发一个自动合成雪碧图的loader

    说明 玩转 webpack 学习笔记 支持的语法 对样式里面图片引用后面加 __sprite 进行图片合并 如何将两张图片合成一张图片? 使用 spritesmith https://github.c ...

  3. webpack学习之路

    webpack学习之路 当自己在学习webpack的时候,在网上发现中文的很详细的教程很少,于是便想将自己学习webpack的笔记记录整理下来,便有了这篇文章,希望对大家有所帮助,如果有错误,欢迎大家 ...

  4. webpack学习笔记1

    webpack学习笔记1:基本概念 前言: 现在在日常的开发中,webpack已经是必不可少的东西了,现在的需求基本都是用webpack对资源进行打包整合,所以打算写一点关于webpack的东西,这是 ...

  5. webpack基础篇(三):管理资源(image、css、fonts、csv、json5)

    目录 1. 处理资源 - loader 1.1 加载css - css-loader 1.2 处理less - less-loader 2. 加载css 2.1 抽离css 自定义分类的css文件名 ...

  6. webpack学习之 style-loader / css-loader

    继续我们上一篇的webpack学习,现在我们进一步学习 其他的配置 css-loader:用于让webpack加载这个css文件 安装:npm install css-loader -D / npm ...

  7. webpack学习(四) -- css tree shaking

    css tree shaking 我们和webpack(三)一样,用案例说话 安装css需要的两个loader,css-loader 和style-loader npm install css-loa ...

  8. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

  9. webpack学习之2.自动编译、实时重载LiveReload、热替换HMR

    代码沿用webpack学习之1.基础配置 每次要编译代码时,手动运行 npm run build 就会变得很麻烦. webpack 中有几个不同的方式,可以在代码发生变化后自动编译代码: webpac ...

最新文章

  1. linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹
  2. 漫画 | 产品经理的八大罪状
  3. 对于第十五届智能车竞赛由于受到疫情影响对于确定国赛中可能存在瑕疵的地方
  4. Nginx CONTENT阶段 static模块
  5. 数据库面试题【十一、InnoDB引擎的4大特性】
  6. 基于 CentOS Mysql 安装与主从同步配置详解
  7. Flash获取html参数的方法
  8. 机器学习(Machine Learning)
  9. 论文笔记_S2D.40_2017_CVPR_半监督深度学习的单目深度图预测
  10. isbn书号查询php代码,ISBN书号查询
  11. 伤感的英文单词[转帖]
  12. Uniapp 添加Iconfont
  13. win7 x64下安装python-opencv 及 “not a supported wheel”解决
  14. php图片是啥,PHP图片操作
  15. 随机点名器的实现!!!
  16. TFmini和TFmini-Plus——激光雷达模组 资料汇总
  17. 知识图谱学习笔记之知识图谱中的知识分类
  18. 初识大数据与Python语言——学习笔记
  19. ML (Chapter 10): 降维与度量学习
  20. 网易公共课Linux Shell脚本应用学习笔记

热门文章

  1. 象棋将帅不能碰面 java_中国象棋有大智慧,但是将帅却不能碰面,原来背后有这么一个故事...
  2. 数据传输方式(并行/串行通信;同步/异步;单工、半双工、全双工)
  3. centos mate桌面_Centos7MATE桌面使用VNC
  4. 牛客网 NC20859 兔子的名字
  5. 脱发?没对象?格子衫?这些对程序员的误解该停停了!
  6. http性能测试工具wrk源码学习之开篇
  7. GP copy 数据迁移
  8. php5.3配置SQL Server数据库
  9. “华龙一号”首台核能发电机研制成功,多项指标达世界先进水平
  10. Macaca 环境配置记录