【Vue】Re10 Webpack 第二部分(Loader)
一、Loader解决的问题:
Loader解决的问题是让webpack能够打包其他类型的文件
例如CSS、IMG等非JavaScript脚本文件
在后面我们使用Vue组件文件时也需要VueLoader实现转换编译
二、使用Loader
安装Loader模块,然后配置Loader
三、演示案例:
关于入口Main.js的说明

目录只留下main.js,其他JS存放对应的目录中清晰项目结构
我们在src的css目录下创建一个style.css文件
body {
background-color: rebeccapurple;
}
我们希望把这个css文件能够当成JS文件一样打包进来
在Main.js文件中导入进来
const { sum, multi } = require('./common/util.js');
console.log(sum(22, 32));
console.log(multi(213, 219));
// import util from "./util";
//
// console.log(util.sum(22, 32));
// console.log(util.multi(213, 219));
//
let styleSheetFile = require('./css/style.css');
使用打包命令就会发现报错失败
> part1@1.0.0 build D:\Vue-Learn\CodeWhy\08-webpack\part1
> webpack Hash: d280867887e7b79e18fa
Version: webpack 3.6.0
Time: 64ms
Asset Size Chunks Chunk Names
bundle.js 3.45 kB 0 [emitted] main
[0] ./src/main.js 272 bytes {0} [built]
[1] ./src/common/util.js 331 bytes {0} [built]
[2] ./src/css/style.css 247 bytes {0} [built] [failed] [1 error]
ERROR in ./src/css/style.css
Module parse failed: D:\Vue-Learn\CodeWhy\08-webpack\part1\src\css\style.css Unexpected token (1:5)
You may need an appropriate loader to handle this file type.
| body {
| background-color: rebeccapurple;
| }
@ ./src/main.js 9:21-47
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! part1@1.0.0 build: `webpack`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the part1@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2020-10-30T02_00_38_062Z-debug.log
所以明白需要安装CSS-Loader
在webpack中文网中提供了文档那个示例:
https://www.webpackjs.com/concepts/loaders/#%E7%A4%BA%E4%BE%8B
或者这里查看其他loader:
https://www.webpackjs.com/loaders/css-loader/
根据官方说明,CSS-LOADER的安装步骤如下:
注意loader版本是2.0.2,编写此随笔时的版本已更新到5.0.0
npm install --save-dev css-loader@2.0.2
导入的步骤我们使用的时CommonJS的写法,在Main.js写的,官方给的是ES6
import css from 'file.css';
然后在webpack.config.js中进行配置:
const path = require('path'); /* 这里依赖一个path,这个path来自于npm的包中的一个模块,必须要有path包才能用 */
/* 所以需要装包 npm init */
module.exports = {
entry : './src/main.js', /* 打包的程序入口 */
output : { /* 打包输出的文件,出口路径 分为路径和文件名 */
// path : './dist', /* 路径可以动态获取 */
path : path.resolve(__dirname, 'dist'),
/* __dirname是一个全局变量 值是当前webpackconfig.js文件所在的绝对路径, cans参数二就是我们自定义的目录名称 */
filename : 'bundle.js', /* bundle 意思打包 就是打包好的JS文件 */
},
module: {
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
}
]
}
}
上述的配置信息中还多了一个style-loader,那么style-loader我们还没有进行安装
style-loader负责让打包转换好的CSS文件能够被页面解析渲染
所以也要补上:【style-loader当前版本2.0.0】
npm install style-loader --save-dev
打印信息:
D:\Vue-Learn\CodeWhy\08-webpack\part1>npm install style-loader --save-dev
npm WARN css-loader@5.0.0 requires a peer of webpack@^4.27.0 || ^5.0.0 but none is installed. You must install p
eer dependencies yourself.
npm WARN style-loader@2.0.0 requires a peer of webpack@^4.0.0 || ^5.0.0 but none is installed. You must install
peer dependencies yourself.
npm WARN part1@1.0.0 No description
npm WARN part1@1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","ar
ch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules\watchpack-chokidar2\node_modules\f
sevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","a
rch":"any"} (current: {"os":"win32","arch":"x64"}) + style-loader@2.0.0
added 3 packages from 5 contributors in 3.321s 11 packages are looking for funding
run `npm fund` for details
再次打包,正常执行
Hash: 177f47e9a78a8d456382
Version: webpack 3.6.0
Time: 493ms
Asset Size Chunks Chunk Names
bundle.js 14.1 kB 0 [emitted] main
[0] ./src/main.js 272 bytes {0} [built]
[1] ./src/common/util.js 331 bytes {0} [built]
[2] ./src/css/style.css 332 bytes {0} [built]
[4] ./node_modules/css-loader/dist/cjs.js!./src/css/style.css 193 bytes {0} [built]
+ 2 hidden modules
整个页面成功渲染:

也就是所有的文件的功能都集中在整个Bundle.js中了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>Hello Webpack</h3>
<script type="text/javascript" src="dist/bundle.js"></script>
</body>
</html>
四、Less补充和配置语法扩展
Less是一个CSS的框架,提供了更为便捷的CSS写法
如何使用Less这里不详细赘述了
我们在项目中使用LESS,打包也需要对应的Loader予以支持
npm install less-loader@3.9.0 --save-dev
对Module的配置:
// webpack.config.js
module.exports = {
...
module: {
rules: [{
test: /\.less$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "less-loader", options: {
strictMath: true,
noIeCompat: true
}
}]
}]
}
};
详细翻阅:
https://www.webpackjs.com/loaders/less-loader/
五、其他文件的Loader
图片文件在网页资源中,以URL的形式存在,
wepack无法识别这样的引用,所以需要对应的Loader实现
npm install url-loader@1.1.2 --save-dev
配置详细见文档
文件Loader的安装:
npm install file-loader@3.0.1 --save-dev
详细描述见视频:
https://www.bilibili.com/video/BV15741177Eh?p=80
六、ES6语法处理Loader
为了兼顾浏览器解析,我们可以把ES6语法的东西打包成ES5
npm install babel-laoder@7 babel-core babel-preset-es2015 --save-dev
详细见:
https://www.bilibili.com/video/BV15741177Eh?p=81
【Vue】Re10 Webpack 第二部分(Loader)的更多相关文章
- webpack配置常用loader加载器
webapck中使用loader的方法有三种 使用loader之前必须运行安装 : npm install --save-dev xxx-loader (1)通过CLI : 命令行中运行 webpac ...
- 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发
每天记录一点:NetCore获得配置文件 appsettings.json 用NetCore做项目如果用EF ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...
- 在基于vue的webpack脚手架开发中使用了代理转发,结果浏览器发出的请求中不带cookie导致登录时总是session失效怎么办?
环境: 有2个业务接口需要转发到82的服务器上: ../user/getCode.do ../user/doLogin.do 现象: 使用上述的 ...
- Vue.js——webpack
Vue.js——60分钟webpack项目模板快速入门 browserify是一个 CommonJS风格的模块管理和打包工具,上一篇我们简单地介绍了Vue.js官方基于browserify构筑的一套开 ...
- vue+node+webpack搭建环境
一.环境搭建 1.1.去官网安装node.js( http://www.runoob.com/nodejs/nodejs-install-setup.html ) 注意node的版本,只有支持和谐模 ...
- vue.js+webpack在一个简单实例中的使用过程demo
这里主要记录vue.js+webpack在一个简单实例中的使用过程 说明:本次搭建基于Win 7平台 Node.js 安装官网提供了支持多种平台的的LTS版本下载,我们根据需要来进行下载安装.对于Wi ...
- 在Vue的webpack中结合runder函数
在Vue的webpack中结合runder函数 1.引入: <h1>下面是vue的内容:</h1> <div id="app"> <log ...
- vue使用webpack压缩后体积过大要怎么优化
vue使用webPack压缩后存储过大,怎么优化 在生产环境去除developtool选项 在webpack.config.js中设置的developtool选项,仅适用于开发环境,这样会造成打包成的 ...
- VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址
转载地址: https://blog.csdn.net/gebitan505/article/details/58166055 VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址 前 ...
- vue 一些webpack的配置详解
最近一直在忙着做项目 本来想养成一个经常跟新博客的习惯 , 但是实在是太难了 , 每天加班到10点多 .8点能下班都是最好的了 , 小公司真不好待呀 分享一下最近半年的vue心得吧 我的项目是在他的基 ...
随机推荐
- vue过滤器 - filters
在数据被渲染之前,可以对其进行进一步处理,比如将字符截取或者将小写统一转换为大写等等,过滤器本身就是一个方法. 过滤器可以定义全局或局部 # 全局 // 回调函数中的参数1永久是绑定的数据 Vue.f ...
- 算法学习笔记(13): Manacher算法
Manacher算法 形象的被译为马拉车算法 这个算法用于处理简单的回文字符串的问题.可以在 \(O(n)\) 的复杂度内处理出每一个位置为中心的回文串的最长长度. 为了避免出现偶数长度的回文串,导致 ...
- 解决java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone
错误描述: 使用JDBC连接数据库是产生错误 应该是数据库时区问题,在url配置时设置serverTimezone = GMT即可 url = "jdbc:mysql://localhost ...
- 配置系统未能初始化。“System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。
配置系统未能初始化."System.Transactions.Diagnostics.DiagnosticTrace"的类型初始值设定项引发异常. 1.是检查当前程序的 App.c ...
- 安装sql 2012 时遇到“需要更新的以前的 Visual Studio 2010 实例。”规则失败。
"需要更新的以前的 Visual Studio 2010 实例."规则失败.此计算机安装了需要 Service Pack 1 更新的 Visual Studio 2010,必须安装 ...
- AIGC底层技术介绍
1.AIGC概述 AIGC,全称Artificial Intelligence Generated Content,即人工智能生成内容.这是一种新兴的人工智能技术,其核心思想是利用人工智能模型,根据给 ...
- PHP 程序员转 Go 语言的经历分享
大家好,我是码农先森. 之前有朋友让我分享从 PHP 转 Go 的经历,这次它来了.我主要从模仿.进阶.应用这三个方面来描述转 Go 的经历及心得.模仿是良好的开端,进阶是艰难的成长,应用是认知的提升 ...
- k8s集群搭建及对一些组件的简单理解(一)
背景 k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题. 要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的:后来买了一台便宜的,所以就有了两台,但是不在 ...
- 解决Vue中使用history路由模式出现404的问题
背景 vue中默认的路由模式是hash,会出现烦人的符号#,如http://127.0.0.1/#/. 改为history模式可以解决这个问题,但是有一个坑是:强刷新.回退等操作会出现404. Vue ...
- 【ClickHouse】6:clickhouse集群高可用
背景介绍: 有四台CentOS7服务器安装了ClickHouse HostName IP 安装程序 程序端口 shard(分片) replica(备份) centf8118.sharding1.db ...