2.Webpack

Webpack入门

在这里插入图片描述
在这里插入图片描述
webpack官网

安装配置

npm i webpack webpack-cli --save-dev

npm

npm i xxx --save 
npm i xxx --save-dev 
--save 会把依赖包名称添加到 package.json 文件 dependencies 键下 
--save-dev 则添加到 package.json 文件 devDependencies 键下 

dependencies是运行时的依赖 
devDependencies是开发时的依赖

** Yarn**

yarn add jquery 
// 表示通过“运行依赖”方式安装jquery后边没有参数,运行依赖也有参数,为--save 简称 为 -S,但是可以不用设置 
yarn add webpack -D 
// webpack后边有-D参数,表示通过“开发依赖”方式安装 开发依赖参数为 --save-dev 简称为 -D

在这里插入图片描述

案例

在根目录下创建src文件夹,其中一个是入口文件app.js,一个是写内容的work.js。入口文件用来引入真正写页面 的JS文件、CSS文件。

work.js

document.write('铁蛋儿真帅')

app.js

let dt = require('./work.js')

然后,再返回上一层目录,新建index.html文件(该文件和src属于同一层级)

<!DOCTYPE html> 
<html>
	<head>
		<meta charset="UTF-8"> 
		<title>test</title> 
	</head> 
	<body>
		<div>test</div> 
		<script src='./dist/main.js'></script> 
	</body> 
</html>

在命令行中执行

webpack app.js

配置打包模式

在这里插入图片描述

配置入口和出口文件

在这里插入图片描述
配置快速启动项package.json

"scripts": {
 	"build": "webpack" 
 },

给webpack.config.js做如下配置

// webpack中引入其他的模块要使用commonJS模块化require导入 因为webapck是nodeJS开发的 不能使用 import导入 
const ph = require('path') 
module.exports = { 
	mode: 'development', 
	entry: ph.resolve('./src/app.js'), // 绝对路劲 
	output: { 
		path: ph.resolve('./dist'), // 配置出口目录 
		filename: "main.js" // 配置出口文件名称 
		} 
	}

打包 npm run build

编译模板页面

webpack有一个插件,可以实现同时打包/(复制)index.html到达dist目录,并自动就引入main.js文件,我们要做到 的事情就是直接运行打包好的模板文件即可
**安装工具 **

yarn add html-webpack-plugin -D

在webpack.config.js中配置如下信息
在这里插入图片描述
在index.html模板中不用引入任何的js文件了
做物理打包 npm run build(编译生成模板文件了,并且有自动引入main.js文件)

实时打包

项目开发都是对src目录内部的文件进行更新,不要去修改dist打包好的文件
现在对src内部的任何文件做修改操作后,都需要重新打包,才可以看到对应效果
webpack本身有一个工具,名称为 webpack-dev-server,可以实现随时修改源文件,浏览器随时看到修改后的效 果,不需要反复打包,这样就非常好。 webpack-dev-server安装运行起来之后,会给我们创建一个http的web服务

**安装 **

yarn add webpack-dev-server

webpack.config.js中做如下配置
在这里插入图片描述
在package.json中做如下配置
在这里插入图片描述
通过 npm run serve 就可以实现 实时打包、实时编译、实时浏览器查看效果了
在这里插入图片描述

运行css文件

在这里插入图片描述

loader

webpack本身就是一个打包机器,其不能对具体代码内容部分进行处理(或处理得非常有限),不同的代码内容 (less/scss/ES6(ES7)/image/css等等)需要webpack找到不同的loader(装载器)实现转码、编译、降级处理。

安装配置css相关loader

css内容相关的loader有:style-loader 和 css-loader
安装
yarn add css-loader style-loader -D
** 在webpack.config.js中做如下配置(注意use的顺序一定是如下)**
在这里插入图片描述
现在重新 实时打包 npm run serve发现 css文件的样式已经生效

引入背景图片应用

在这里插入图片描述
img图片相关的loader有两个:url-loader 和 file-loader
安装

 yarn add url-loader file-loader -D

webpack.config.js中做具体配置

{ 
// 图片处理loader配置 
test: /\.(png|jpg|gif)$/i, // 正则匹配图片文件
 // 遇到图片文件就交给如下loader处理 
 use: [ 
 	{ 
 		loader: 'url-loader', 
 		options: { 
 		// limit:设定大小阀值
 		// a. 被处理图片大小 大于该阀值,就通过物理文件重新生成该图片 
 		// b. 被处理图片大小 小于等于该阀值,就把图片变为字符串(嵌入到应用文档中,好处是节省一个http资 源) 
 		limit: 8192, 
 		// 做配置,使得生成的物理图片被存储在dist/images里边 
 			outputPath: "images", 
 			} 
 		} 
 	] 
 },

在这里插入图片描述

url-loader: 负责把大小小于等于阀值的图片变为字符串 
file-loader: 负责把大小 大于阀值的图片重新以物理文件形成生成在dist目录

在这里插入图片描述

应用less文件

在这里插入图片描述
安装依赖包

yarn add less-loader less -D

webpack.config.js做如下配置

{ 
	//less处理loader配置 
	test: /\.less$/, 
	use: ["style-loader", "css-loader", "less-loader"]
}

less样式文件处理需要3个loader,具体为上述,它们有严格的顺序,它们有做工作交接
它们执行的顺序是颠倒的(less>css>style)

style-loader:负责生成style标签,把css样式体现出来,之后该标签嵌入到应用文档中去 css-loader:使得css文件可以通过import引入,并合并到main.js中 
less-loader: 该loader负责把less文件内容转变为 css内容

现在在重新实时打包运行 npm run serve,发现less设置样式已经生效

运行es6标准代码

在work.js中应用es6内容(let、箭头函数、对象解构赋值、…展开运算符等等)

// 对es6高级内容做应用 
let age = 18 
let getShuai = ()=>{ 
	return '铁蛋儿' 
}

**给项目做物理打包 **

npm run build

发现情况不好,在main.js中生成的内容还是es6高级的信息
能够把es6高级内容变为es5的loader名称为 babel-loader
在这里插入图片描述
babel-loader官网*
** 安装依赖包
*

yarn add babel-loader @babel/core @babel/preset-env -D

在webpack.config.js中做如下配置
在这里插入图片描述
在项目根目录创建 babel.config.js文件,配置如下,使得babel-loader可以找到preset做代码降级处理
在这里插入图片描述
现在给项目做物理打包 npm run build,发现高级内容已经降级处理了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值