Vue.js -------webpack

  • 1. 能够说出webpack的作用
  • 2. 能够掌握webpack基本配置
  • 3. 能够知道webpack开发服务器运作过程
  • 4. 能够熟练webpack中文文档

 一.webpack的作用

webpack的主要作用:

  • 1 . 减少文件数量
  • 2 . 缩减代码体积
  • 3 . 提高浏览器打开的速度
1._webpack基本概述

webpack本质是, 一个第三方模块包, 用于分析, 并打包代码 

  • 支持所有类型文件的打包
  • 支持less/sass => css
  • 支持ES6/7/8 => ES5
  • 压缩代码, 提高加载速度

 

什么是webpack呢? 作用是什么? 目的是?

1. 它是一个模块包 2. 识别代码, 翻译, 压缩, 整合打包 3. 提高打开网站的速度

二.webpack使用步骤

首先要下载yarn命令:

npm install --global yarn

1. 初始化包环境

2. 安装依赖包

yarn add webpack webpack-cli -D

3. 配置scripts (自定义命令)在package.json中修改

 

使用webpack需要做哪些准备工作?

1. 初始化文件夹包环境, 得到package.json文件

2. 下载webpack等模块包

3. 在package.json自定义命令, 为打包做准备

1.webpack基础使用

需求: 2个js文件 ->打包成1个js文件 分析:

  • ①:新建src下的资源
  • ②:add.js – 定义求和函数并导出
  • ③:index.js – 引入add模块并使用函数输出结果
  • ④:执行 `npm run build` 自定义命令, 进行打包 (确保终端路径在src的父级文件夹)
  • ⑤:打包后默认生成dist和main.js, 观察其中代码

 

webpack如何使用

1. 默认src/index.js – 打包入口文件

2. 需要引入到入口的文件才会参与打包

3. 执行package.json里build命令, 执行webpack打包命令

4. 默认输出dist/main.js的打包结果

 2.webpack再次打包
  • ①:src下新建tool/tool.js
  • ②:定义数组求和函数导出 ③:index.js – 引入tool模块的函数并使用, 打印结果
  • ④:执行 `yarn build` 自定义命令, 进行打包 (确保终端路径在src的父级文件夹)
  • ⑤:打包后默认生成dist和main.js, 观察其中代码

 代 码 增 加 后 , 如 何 打 包 呢 ?

1 . 确保在 src/index.js 引入和使用

2 . 重新执行 yarn build 打包命令

  

 

三.webpack的配置  

1.webpack-入口和出口 

配置文档: https://webpack.docschina.org/concepts/#entry

  • 1. 新建webpack.config.js
  • 2. 填入配置
  • 3. 修改入口文件名
  • 4. 打包观察效果

注意: webpack基于node, 所以导出, 遵守CommonJS规范

如何修改webpack入口和出口

1. 新建webpack.config.js (webpack默认配置文件名) 2. 通过entry设置入口文件路径 3. 通过output对象设置出口路径和文件名

2.yarn build执行流程图 

重点: 所有要被打包的资源都要跟入口产生直接/间接的引用关系

执行webpack命令, 找到配置文件, 入口和依赖关系, 打包代码输出到指定位置

3.案例-隔行变色  

webpack打包代码, jquery实现功能

需求:新建项目, yarn下载jquery, 然后模块化引入到js中, 编写jq代码实现隔行变色

步骤:

  • ①:从0准备环境, 初始化包环境, 下载webpack和webpack-cli包, 配置自定义命令build
  • ②:yarn下载jquery, 新建public/index.html,准备一些li标签
  • ③:src/main.js 引入jquery, 编写功能代码
  • ④:执行打包命令
  • ⑤:复制public/index.html到dist/, 然后引入打包后的js, 运行网页观察效果
  • 在index.html文件中引入打包的js

用 yarn 下的包 , 如何作用在前端项目中?

1 .借助webpack, 把模块和代码打包

2 . 把js文件引入到html执行查看效果

4.html-webpack-plugin插件  

配置文档: https://webpack.docschina.org/plugins/html-webpack-plugin/

1. 下载插件

2. webpack.config.js添加配置

在重新创建项目的时候,一定要把之前需要的配置重新安装一下,以下错误的原因是没有重新下载jquery.

重要: webpack就像一个人, webpack.config.js是人物属性, 给它穿什么装备它就干什么活

5.webpack打包css文件  

目标:编写css代码, 让webpack打包

  • 1. 新建 - src/css/index.css
  • 2. 编写去除li圆点样式代码
  • 3. (重要) 一定要引入到入口才会被webpack打包
  • 4. 执行打包命令观察效果

报错: 因为webpack默认只能处理js文件

6.webpack-使用加载器

css-loader 文档: https://webpack.docschina.org/loaders/css-loader/

style-loader文档: https://webpack.docschina.org/loaders/style-loader/

css-loader 让webpack能处理css类型文件 style-loader 把css插入到DOM中

  • 1. 下载加载器
  • 2. webpack.config.js配置
  • 3. 打包观察效果

webpack如何支持css打包? 打包后样式在哪里? 如何生效?

1. 依赖css-loader和style-loader

2. css代码被打包进js文件中

3. style-loader会把css代码插入到head下style标签内

 7.webpack处理less文件

less-loader文档:https://webpack.docschina.org/loaders/less-loader/

less-loader作用: 识别less文件

less 作用: 将less编译为css

  • 1. 新建src/less/index.less – 设置li字体大小
  • 2. 把index.less引入到入口处
  • 3. 下载加载器来处理less文件
  • 4. webpack.config.js针对less配置
  • 5. 打包观察效果

webpack如何支持less打包? 需要注意什么?

1. 依赖less-loader和less模块包

2. 转换css后还需要css-loader和style-loader的处理

8.webpack处理图片文件  
  • 1. 在src/assets/准备图片文件
  • 2. 在index.less对body设置背景图片
  • 3. 在入口导入图片文件, 设置到img标签插入到body
  • 4. 打包观察效果

报错: 因为webpack无法自己处理图片文件

webpack5, 使用asset module技术实现字体文件和图片文件处理, 无需配置额外loader

文档: https://webpack.docschina.org/guides/asset-modules/

以前用url-loader和file-loader来处理

现在webpack.config.js – 针对图片文件设置type: “assets“ 再次打包观察效果 小于8KB文件, 文件转base64打包在js中, 大于8KB, 文件自动命名输出到dist下, 打包观察效果和2图区别

在webpack.config.js添加配置,

 

下载file-loader包

运行npm run build

webpack如何支持图片打包? 对图片有哪2种处理方案?

1. webpack5, 在rules里, 针对图片文件设置type: asset

2. 小于8KB转base64字符串进js里, 大于8KB输出文件

9.webpack加载文件优缺点  

图片翻译成了base64, 放到了js文件中

  • 好处: 浏览器不用发请求了,直接可以读取, 速度快
  • 坏处: 图片太大,再转`base64`就会让图片的体积增大 30% 左右, 得不偿失

图片转base64打包进js中好处和坏处是什么?

1. 好处是减少浏览器发送的请求次数, 读取图片速度快

2. 坏处是图片过大, 转base64占空间会多30%左右

10.webpack处理字体图标 

在创建项目的时候需要安装以下模块

首先创建项目框架 
yarn init

webpack包
yarn add webpack  webpack-cli  -D

html-webpack-plugin包
yarn add html-webpack-plugin -D

less模块
npm install less less-loader --save-dev

less-loader模块
yarn add less-loader less -D

css模块和style模块
npm install --save-dev style-loader css-loader

jquery模块
yarn add jquery

file-loader模块
npm install file-loader --save-dev
  • 1. src/assets 下 放入fonts字体相关文件夹(预习资料里)
  • 2. src/main.js 引入 assets/fonts/iconfont.css
  • 3. src/main.js 创建一个i标签, 使用字体图标标签添加到body上
  • 4. 添加针对字体文件的加载器规则, 使用asset/resource(直接输出文件并配置路径)
  • 5. 打包后运行网页观察效果

webpack如何处理图标字体文件呢?

1. 在webpack.configjs的rules里针对字体图标文件类型

设置asset/resource, 直接输出到dist下

11.webpack对JS语法降级  
  • babel官网: https://www.babeljs.cn/
  • babel-loader文档: https://webpack.docschina.org/loaders/babel-loader/

babel: 一个javascript编译器, 把高版本js语法降级处理输出兼容的低版本语法

babel-loader: 可以让webpack转译打包的js代码

  • 1. 在src/main.js – 定义箭头函数, 并打印箭头函数变量 (千万不能调用, 为了让webpack打包函数, 看降级效果)
  • 2. 下载加载器
  • 3. 配置到webpack.config.js上
  • 4. 打包观察是否降级

webpack如何帮助我们降低js版本语法的呢?

1. 借助babel-loader和babel编译器, 给webpack配置上

webpack开发服务器 

1.webpack开发服务器

问题: 每次修改代码, 重新 yarn build 打包, 才能看到最新的效果, 实际工作中, 打包 yarn build 非常费时 (30s - 60s) 原因:

  • 从0构建依赖
  • 磁盘读取对应的文件到内存, webpack开始加载
  • 再用对应的 loader 进行处理
  • 将处理完的内容, 输出到磁盘指定目录

解决: 起一个开发服务器, 缓存一些已经打包过的内容, 只重新打包修改的文件, 最终运行在内存中给浏览器使用

总结: webpack开发服务器, 把代码运行在内存中, 自动更新, 实时返回给浏览器显示

2.webpack-dev-server模块使用  

webpack-dev-server文档: https://webpack.docschina.org/configuration/dev-server/

  • 1. 下载模块包
  • 2. 自定义webpack开发服务器启动命令serve – 在package.json里
  • 需要在webpack.config.js配置文件中,添加如下内容
  • 3. 启动当前工程里的webpack开发服务器
  • 4. 重新编写代码, 观察控制台和浏览器是否自动打包和更新

如何使用webpack开发服务器实时打包我们代码呢?

1. 确保下载了webpack-dev-server到工程中 2. 在package.json-配置自定义命令, 然后启动即可 3. webpack-dev-server会给我们一个地址+端口浏览器

访问即可看到在内存中打包的index.html页面

3.webpack-dev-server配置 

webpack-dev-server配置文档: https://webpack.docschina.org/configuration/devserver/#devserverafter 

1. 在webpack.config.js中添加如下配置即可

2. 重新启动webpack开发服务器观察效果

如何修改webpack开发服务器的配置呢?

1. 去文档查找配置项的名字 2. 在webpack.config.js – devServer选项里添加

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值