【Vue】1-3、Webpack 中的 loader

一、概述

在实际开发过程中,webpack 默认只能打包处理以 .js 后缀结尾的模块。

其他的非 .js 后缀名结尾的模块 webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错!

loader 加载器的作用 :协助 webpack 打包处理特定的文件模块。

  • css-loader 可以打包处理 .css 相关文件

  • less-loader 可以打包处理 .less 相关文件

  • babel-loader 可以打包处理 webpack 无法处理的高级 js 语法

二、打包处理 css 文件

步骤:

1)运行 npm install style-loader@3.0.0 css-loader@5.2.6 -D 命令,安装处理 css 文件的 loader

2)在 webpack.config.jsmodule -> rules 数组中,添加 loader 规则如下:

javascript 复制代码
module:{	// 所有第三方文件模块的匹配规则
	rules: [	// 文件后缀名的匹配规则
		{
			test:/\.css$/,
			use:['style-loader','css-loader']
		}
	]
}

其中,test 表示匹配的文件类型use表示对应要调用的 loader

注意:

use 数组中指定的 loader 顺序是固定的

多个 loader 的调用顺序是:从后往前调用

三、打包处理 less 文件

步骤:

1)运行 npm install less-loader@10.0.1 less@4.1.1 -D 命令

2)在 webpack.config.jsmodule -> rules 数组中,添加 loader 规则如下:

javascript 复制代码
module:{	// 所有第三方文件模块的匹配规则
	rules: [	// 文件后缀名的匹配规则
		{
			test:/\.less$/, 
            use:['style-loader','css-loader','less-loader']
		}
	]
}

四、打包处理样式表中与 url 路径相关的文件

步骤:

1)运行 npm install url-loader@4.1.1 file-loader@6.2.0 -D 命令

2)在 webpack.config.jsmodule -> rules 数组中,添加 loader 规则如下:

javascript 复制代码
module:{	// 所有第三方文件模块的匹配规则
	rules: [	// 文件后缀名的匹配规则
		{
			test:/\.jpg|png|gif$/, 
            use:['url-loader?limit=22229']
		}
	]
}

其中 之后的是 loader 的参数项:

  • limit 用来指定图片的大小,单位是字节(byte

  • 只有 <= limit 大小的图片,才会被转为 base64 格式的图片

五、打包处理 js 文件中的高级语法

webpack 只能打包处理 一部分高级的 JavaScript 语法。

对于那些 webpack 无法处理的高级 js 语法,需要借助于 babel-loader 进行打包处理。

例如 webpack 无法处理下面的 JavaScript 代码:

javascript 复制代码
// 定义了名为 info 的装饰器
function info(target){
	// 为目标添加静态属性 info
	target.info = 'Person info.'
}
// 为 Person 类应用 info 装饰器
@info
class Person{}

// 打印 Person 的静态属性info
console.log(Person.info)

步骤:

1)运行 npm install babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D 命令

2)在 webpack.config.jsmodule -> rules 数组中,添加 loader 规则如下:

javascript 复制代码
module:{	// 所有第三方文件模块的匹配规则
	rules: [	// 文件后缀名的匹配规则
		{
			test:/\.js$/, 
            use:'babel-loader',
            exclude:/node_modules/
		}
	]
}

3)在项目根目录下,创建名为 babel.config.js 的配置文件,定义 Babel 的配置项如下:

javascript 复制代码
module.exports = {
	// 声明 babel 可用的插件
	plugins:[
        [
            '@babel/plugin-proposal-decorators',
            {
                legacy: true
            }
        ]
    ]
}

Babel官网:https://babeljs.io/dosc

一 叶 知 秋,奥 妙 玄 心

相关推荐
犹豫的果冻布丁11 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端
漏刻有时11 小时前
数据可视化Three.js 3D 地图实战:单文件原生实现省域区县拉伸建模
前端
会说话的番茄11 小时前
AI 满嘴跑火车怎么办?给它配个"小抄"
前端·aigc
计算机魔术师11 小时前
AI 权力集中辩论实录:从「token 工厂」到「唯一幸存者」
前端
eric-sjq11 小时前
WanlyFrontend 中文声明式前端语言完全指南:让 0.6B 模型写出漂亮网页
前端
Full Stack Developme11 小时前
跨站请求伪造 (CSRF) 是什么 设计及工作原理
前端·okhttp·csrf
MoSTChillax12 小时前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding
雪碧聊技术12 小时前
Vue + Element Plus 实现文本溢出显示省略号及悬浮提示
前端·javascript·css·vue.js·文本溢出省略
eric-sjq12 小时前
0.6B 前端生成模型本地部署实战:消费级显卡跑通 WanlyFrontend 全流程
前端·本地部署
小妖66613 小时前
设置了 box-sizing: border-box; 不管用,下边框还是被挤压没了
前端·css·html