什么是loader?

  • 官方说明webpack 可以使用 loader 来预处理文件。这允许你打包除 JavaScript 之外的任何静态资源。
  • Loader就是一个打包的方案,他知道对于某一个特定的文件,Web pack应该如何的进行打包。
  • 本身webpack 对于一些文件是不知道该如何处理的,但是loader知道,所以呢,我们想要打包其他文件格式的话,直接去配置loader可以了

使用

1、打包处理css文件
端运行npm install style-loader css-loader -D安装处理css的loader
在webpack.config.js文件中module.exports下配置

module:{rules:[{test:/\.css$/,use:['style-loader','css-loader']}]},//test表示要打包的文件类型,use表示要调用loader//use数组中的loder的顺序是固定的,从后往前调用

配置成功,在src目录下创建css文件夹添加1.css文件,在js下的index.js文件头部添加import '../css/1.css',即可打包css文件。
2.打包处理less文件
运行npm install less-loader less -D 命令,在webpack.config.js的rules中添{test:/\.less$/, user:['style-loader','css-loader','less-loader']}


3、打包处理scss文件
运行npm install sass-loader node-sass -D命令,在webpack.config.js的rules中添加{test:/\.scss$/, user:['style-loader','css-loader','sass-loader']}
4、配置post CSS自动添加css的兼容前缀
运行npm install postcss-loader autoprefixer -D命令,在项目根目录创建postcss.config.js文件,并配置。

const autoprefixer=require('autoprefixer')//导入自动添加前缀的插件
module.exports={plugins:[autoprefixer],//挂载插件,
}

在webpack.config.js文案中的module rules数组中,将css对应条目更改为{test:/\.css$/,use:['style-loader','css-loader','postcss-loader']}
5、打包处理JS文件中的高级语法
安装babel转换器相关的包npm install babel-loader @babel/core @babel/runtime -D
安装babel语法插件相关的包npm install @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D
在项目根目录中创建babel配置文件babel.config.js

module.exports={presets:['@babel/preset-env'],plugins:['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']
}

在webpack.config.js文件中rule数组中添加规则{test:/\.js$/,use:'babel-loader',exclude:/node_modules/}
6、打包样式表中的图片和字体文件
运行npm install url-loader file-loader -D,在webpack.config.js的rules数组中添加规则{test:/\.jpg|png|gif|bmp|ttf|eot|svg|woof|woof2$/, use:'url-loader?limit=16940'},
7、配置vue组件加载器
运行npm install vue-loader vue-template-compiler -D,在webpack.config.js中添加vue-loader配置项

const VueLoaderPlugin=require('vue-loader/lib/plugin')
module.exports={plugins:[htmlPlugin,new VueLoaderPlugin()],module:{rules:[//...其他规则{test:/\.vue$/,use:'vue-loader'}

loade的注意点

  • 单一原则

    一个loader只做一件事情

  • 多个loader会按照从右至左、从下到上的顺序执行

    例如: 从右至左
    [ ‘style-loader’, ‘css-loader’ ]
    先执行css-loader解析css文件关系拿到所有内容,
    再执行style-loader将内容插入到HTML的HEAD代码中
    例如: 从下至上
    [{
    loader: “style-loader”
    },{
    loader: “css-loader”
    }]
    先执行css-loader解析css文件关系拿到所有内容,
    再执行style-loader将内容插入到HTML的HEAD代码中

总结

loader用来解析js以外的东西
style-loader------读取css,输出js字符串。解析css文件、import

css-loader-----------输出字符串

postcss-loader----让webpack解析、处理css文件的loader,给浏览器加前缀的

autoprefixer-------结合postcss-loader使用,告诉postcss-loader哪些可以加前缀

file-loader----------将文件编译到js中,引入文件(图片/字体)

url-loader-----------将文件编译到js中,以base64形式将文件放在bundle里

less-loader---------编译less

babel-loader--------将es6语法编译为es5等能被浏览器识别的语法

什么是plugin

简单的理解就是对于webpack现有功能的扩展,比如打包优化、文件压缩功能。 与loader的区别在于loader更像是一个加载器,专门将css,less,js,vue等文件进行打包加载的。

使用

1.一个最简单的插件,为打包的文件添加版权声明
该插件名字叫BannerPlugin,属于webpack自带插件
按照下面的方法来修改webpack.config.js的文件:


2.重新打包程序,查看bundle.js文件的头部,看到如下信息:

js压缩plugin
1.使用一个第三方插件uglifyjs-webpack-plugin,并且版本号指定1.1.1,和CLI2保持一致。

npm install uglifyjs-webpack-plugin@1.1.1 --save-dev

2.修改webpack.conifg.js文件,使用插件:


3.查看打包后的bundle.js文件已经是被压缩过的了。

注意点

loader和plugin的区别:

  • loader主要用于转换某些类型的模块,它是一个转换器和加载器。
  • plugin是插件,它是对webpack本身的扩展,是一个扩展器。

总结

  • plugin是插件的意思,通常是用于对某个现有的框架进行扩展。
  • webpack中的插件,就是对wenpack现有功能的各种扩展,比如打包优化,文件压缩等等。

webpack中的Loaders和plugin相关推荐

  1. 六、Webpack详解学习笔记——webpack的安装、起步、配置、loader的使用、webpack中配置Vue、plugin的使用、搭建本地服务器、webpack配置的分离

    一.认识webpack 什么是webpack? 这个webpack还真不是一两句话可以说清楚的. 我们先看看官方的解释: At its core, webpack is a static module ...

  2. webpack把源代码里面的console和debugger全部去掉_在webpack中,module、chunk和bundle到底是什么样的存在?...

    What are module, chunk and bundle in webpack?(在webpack中,module.chunk和bundle到底是什么样的存在呢?)相信很多人在使用webpa ...

  3. sass webpack_如何在Visual Studio和Webpack中编译Sass文件

    sass webpack Sass is a very popular CSS pre-processor. The intent of this tutorial is to show you ho ...

  4. webpack 中的 watch cache (下)

    整个 watch 的过程通过事件的机制,完成几个抽象对象的逻辑串联,当触发 Watching.prototype.watch 的调用回调函数时,流程便进入到了另外一端,开始进行重新编译,相较于第一次编 ...

  5. 霖呆呆的六个自定义Webpack插件详解-自定义plugin篇(3)

    霖呆呆的webpack之路-自定义plugin篇 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 有很多小伙伴在打算学写一个webpack插件的时候,就被官网上那一长条一长条的API给吓 ...

  6. 彻底弄懂Webpack中的Loader机制

    一.前言 面对这些框架所衍生出来的文件,现代的模块打包工具,例如 Webpack 本身只能处理 js  和 JSON 文件,其他类型文件它是不能够处理的.需要借助 Loader 来处理这些类型的文件, ...

  7. 在Vue的webpack中结合runder函数

    在Vue的webpack中结合runder函数 1.引入: <h1>下面是vue的内容:</h1><div id="app"><login ...

  8. Webpack中的sourcemap

    Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...

  9. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

最新文章

  1. 疫情之危,和两类无人车落地之机 | 创新工场“疫情后”系列分享
  2. 华为开源只用加法的神经网络:实习生领衔打造,效果不输传统CNN | CVPR 2020 Oral...
  3. python入门简介
  4. 数据中心机房冷热通道优化设计经验谈
  5. 中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
  6. ios业务模块间互相跳转的解耦方案
  7. python信息管理系统实战_最新python入门+进阶+实战课堂教学管理系统开发全套完整版...
  8. source code怎么用_code-builder代码生成器
  9. python检查_python – 检查属性是否存在的最佳方法是什...
  10. 爱奇艺回应迷雾剧场停播:以完成后期的定档官宣时间为准
  11. Tomcat可以实现Session共享方案
  12. RDMA相关的技术网站
  13. java中main函数的值是_java基础-main方法
  14. vue + wangeditor封装富文本组件
  15. easypoi中excel注解开关_easypoi: 入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法...
  16. shell编程四剑客之 grep
  17. Axure 9 案例教程基础篇之课程简介(助你快速进入实战阶段)
  18. idea添加scala环境_Scala篇:Scala环境及IDEA配置
  19. Python if else elif
  20. 如何使浏览器打开时,默认的文档模式就是标准模式

热门文章

  1. 如何拆分PDF文件?简单几步轻松拆分
  2. 快速应用开发模型(Rapid Application Development,RAD) 构件+快速
  3. 大型电商网站架构分析
  4. Java 学习路线大全,再也不用迷路啦(持续更新)
  5. 鸿蒙除开踏青时,鸿蒙初开踏青时 转载
  6. WAIDC | 自然语言处理如何为行业应用赋能
  7. phpexcel设置背景色和边框和背景色注意事项
  8. 百度网盘源码分享!基于 Maven+SpringBoot+SpringDataJPA
  9. C-Lodop云打印服务器 v3.075
  10. 数据库、表、基本增删改查