webpack从小白到大神之学习笔记

一、webpack是什么?

webpack是一种前端资源构建工具,一个静态模块打包器

二、webpack五个核心概念

1. Entry

webpack以哪个文件为入口起点开始打包,分析构建内部依赖图

2. Output

webpack打包后的资源bundles输出到哪里去,以及如何命名

3. Loader

让webpack能去处理那些非javascript文件(webpack自身只能理解javascript)

4. Plugins

插件,可以用于执行范围更广的任务,插件范围包括,从打包优化和压缩,一直到重新定义环境中的变量等

5. Mode

模式,指示webpack使用相应模式的配置

选项 描述
development 将process.env.NODE_ENV值设置为development,能让代码本地调试运行的环境
production 将process.env.NODE_ENV值设置为production,能让代码优化上线运行的环境

三、webpack安装

npm install webpack webpack-cli -g
结论:
  1. webpack能处理js/json,不能处理css/img等其他资源
  2. 生产环境和开发环境将ES6模块化编译成浏览器能识别的模块化
  3. 生产环境比开发环境多一个压缩的js代码,所以代码比较小

在这里插入图片描述

四、webpack配置文件的编写(webpack.config.js)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打包html
先安装打包html的插件 cnpm i html-webpack-plugin -D

在这里插入图片描述
在这里插入图片描述

处理图片资源

在这里插入图片描述

在这里插入图片描述

打包其他资源(字体图标等)

在这里插入图片描述

五、开发服务器devServer:自动编译,打开浏览器,自动刷新

在这里插入图片描述

Eslint的使用

在这里插入图片描述
在package.json中添加
在这里插入图片描述
禁用 eslint
在这里插入图片描述

js兼容性处理
1. 基本兼容性处理

在这里插入图片描述

2.全部兼容性处理

在这里插入图片描述
在js页面进行引入
在这里插入图片描述

js压缩(直接修改mode为production模式,启动js压缩)、html压缩

在这里插入图片描述

六、webpack性能优化

1.开发环境性能优化
  1. 优化打包构建速度
HMR优化打包构建速度(HMR热模块更新)是指存在于生产环境中的

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081309590220.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p4b19hcHBsZQ==,size_16,color_FFFFFF,t

解决js默认不能使用HMR功能,在入口的index.js设置

在这里插入图片描述
2. 优化代码调试(source-map追踪代码错误)
在这里插入图片描述

2.生产环境性能优化
  1. 优化打包速度
提升构建速度(oneOf)

在这里插入图片描述

缓存:babel

在这里插入图片描述
同时设置hash值,防止修改某一文件时没有被更新,添加contenthash就会根据修改的内容进行更新,没有更新的就被缓存起来,直接读取
在这里插入图片描述
在这里插入图片描述

三个hash值(hash,chunkhash,contenthash)区别

在这里插入图片描述

多进程打包(提升打包速度)

在这里插入图片描述

externals(拒绝某些包参与打包)提升速度

在这里插入图片描述
2. 优化代码运行性能

tree-shaking(树摇)去除无用的代码

在这里插入图片描述

代码分割code split

方法1:
在这里插入图片描述
方法2:搭配单入口(单页应用)文件使用
在这里插入图片描述
方法3:
在这里插入图片描述

js的懒加载(一开始不需要被加载,当触发某个条件时才会去执行加载)

在这里插入图片描述

js预加载(prefetch:会在使用前,提前加载js文件)

区别:js懒加载:正常加载可以认为是并行加载,同一时间加载多个资源
js预加载:等其他资源加载完毕,浏览器空闲时在偷偷加载其他资源,不会阻塞其他资源加载(缺点:兼容性比较差,慎用)
在这里插入图片描述

PWA(离线访问)

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zxo_apple/article/details/107930611