当前位置: 首页 > news >正文

Webpack中的Loader详解

Loader 是 Webpack 中用于处理模块的转换器。它们可以将文件从一种格式转换为另一种格式,比如将 TypeScript 转换为 JavaScript,将 SCSS 转换为 CSS 等。使用 Loader,可以使 Webpack 处理各种类型的文件,而不仅仅是 JavaScript。

1. Loader基础

1.1. 基础使用

Loader 就像是一个翻译员,能把源文件经过转化后输出新的结果,并且一个文件还可以链式地经过多个翻译员翻译。

以处理 SCSS 文件为例:

1. SCSS 源代码会先交给 sass-loader 把 SCSS 转换成 CSS;

2. 把 sass-loader 输出的 CSS 交给 css-loader 处理,找出 CSS 中依赖的资源、压缩 CSS 等;

3. 把 css-loader 输出的 CSS 交给 style-loader 处理,转换成通过脚本加载的 JavaScript 代码;

可以看出以上的处理过程需要有顺序的链式执行,先 sass-loader 再 css-loader 再 style-loader。

以上处理Webpack相关配置如下:

module.exports = {module: {rules: [{test: /\.scss$/,use: ['style-loader',{loader: 'css-loader',options: {minimize: true,},},'sass-loader',],},],},
};

1.2. Loader的职责

由上面的例子可以看出:一个 Loader 的职责是单一的,只需要完成一种转换。如果一个源文件需要经历多步转换才能正常使用,就通过多个 Loader 去转换。在调用多个 Loader 去转换一个文件时,每个 Loader 会链式的顺序执行,第一个 Loader 将会拿到需处理的原内容,上一个 Loader 处理后的结果会传给下一个接着处理,最后的 Loader 将处理后的最终结果返回给 Webpack。

所以,在你开发一个 Loader 时,请保持其职责的单一性,你只需关心输入和输出。

1.3. 常用Loader盘点

1.3.1. babel-loader

  • 作用:将 ES6+ 代码转换为 ES5。

  • 配置:

module.exports = {module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env'],},},},],},
};

1.3.2. css-loader 和 style-loader

  • 作用:css-loader 解析 CSS 文件,style-loader 将 CSS 插入到 DOM 中。

  • 配置:

module.exports = {module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader'],},],},
};

1.3.3. sass-loader

  • 作用:将 SCSS 文件转换为 CSS。

  • 配置:

module.exports = {module: {rules: [{test: /\.scss$/,use: ['style-loader', 'css-loader', 'sass-loader'],},],},
};

1.3.4. file-loader

  • 作用:处理文件(如图片、字体),并返回其 URL。

  • 配置:

module.exports = {module: {rules: [{
http://www.lryc.cn/news/576864.html

相关文章:

  • SpringBoot医疗用品销售网站源码
  • 什么是P2P 网络(Peer-to-Peer Network)
  • (八)聚类
  • KPL战队近五年热度指数
  • 如何解决大语言模型微调时的模型遗忘问题?
  • MYSQL与PostgreSQL的差异
  • Segment Anything in High Quality之SAM-HQ论文阅读
  • ​扣子Coze飞书多维表插件-创建数据表
  • 机器学习9——决策树
  • MyBatis修改(update)操作
  • 【PaddleOCR】PaddlePaddle 3.0环境安装,及PaddleOCR3.0 快速入门使用
  • 企业级路由器技术全解析:从基础原理到实战开发
  • 学习使用Visual Studio分析.net内存转储文件的基本用法
  • cJSON 使用方法详解
  • 华为云 Flexus+DeepSeek 征文|华为云 Flexus 云服务 Dify-LLM 平台深度部署指南:从基础搭建到高可用实践
  • NLP随机插入
  • 如果将Word里每页的行数设置成50行
  • jenkins启动报错,一直无法启动
  • 高并发电商返利 APP 架构设计:从淘客佣金模型到分布式导购系统的技术落地
  • [分布式并行] 流水线并行 PP(NaivePP/GPipe/F-then-B/PipeDream/1F1B)
  • MySQL数据库的增删改查
  • 茶叶根茎分割数据集介绍与应用
  • RNN人名分类器案例
  • Android大图加载优化:BitmapRegionDecoder深度解析与实战
  • Ubuntu20 编译安装 Redis7.2.4
  • SAP顾问职位汇总(第26周)
  • 大模型岗位面试常见问题及解答
  • python+uniapp基于微信小程序的多人协同办公系统
  • 人工智能之数学基础:如何判断正定矩阵和负定矩阵?
  • chapter02_AbstractBeanfactory与模板方法