wepack的理解

1.webpack是什么?

  • 一种前端资源构建工具,一个静态模块打包器(nodule bundle)
  • 前端所有资源文件(js/json/css/img…)都会作为模块处理
  • 它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)

2. Webpack 五个核心概念分别是什么?


Entry

入口(Entry)指示 Webpack 以哪个文件为入口起点开始打包,分析内部构件依赖图

Output

输出(Output)指示 Webpack 打包后的资源 bundles 输出到哪里去,以及如何命名

Loader

Loader 能让 Webpack 处理非 JavaScript/json 文件(Webpack 自身只能处理 JavaScript/json )

Plugins

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

Mode

模式(Mode)指示 Webpack 使用相应模式的配置,只有development(开发环境)和production(生产环境)两种模式


3.webpack的构建流程是什么?

 

  1. 初始化参数:从配置文件和 Shell 语句中读取与合并参数,得出最终的参数;
  2. 开始编译:用上一步得到的参数初始化 Compiler 对象,加载所有配置的插件,执行对象的 run 方法开始执行编译;
  3. 确定入口:根据配置中的 entry 找出所有的入口文件;
  4. 编译模块:从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理;
  5. 完成模块编译:在经过第4步使用 Loader 翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系;
  6. 输出资源:根据入口和模块之间的依赖关系,组装成一个个包含多个模块的 Chunk,再把每个 Chunk 转换成一个单独的文件加入到输出列表,这步是可以修改输出内容的最后机会;
  7. 输出完成:在确定好输出内容后,根据配置确定输出的路径和文件名,把文件内容写入到文件系统

4.webpack的热更新是什么?


热更新又称热替换(Hot Module Replacement),缩写为HMR,基于devServer,生产环境不需要devServer,所以生产环境不能用HMR功能

作用:
优化打包构建速度,一个模块发生变化,只会重新打包这一个模块(而不是打包所有模块),极大提升构建速度

样式文件:可以使用HMR功能,因为style-loader内部实现了

JS文件:默认没有HMR功能,需要修改js代码,添加支持HMR功能。入口文件做不了HMR功能,只能处理非入口js文件

HTML文件:默认没有HMR功能,同时会导致 html 文件不能热更新(即修改没有任何反应)

解决方案:

修改entry入口,将html文件引入

 entry:['./src/js/index.js','./src/index.html']


不用做HMR功能,因为只有一个html文件


5.如何利用webpack来优化前端性能?


开发环境下:

开启HMR功能,优化打包构建速度
配置 devtool: ‘source-map’,优化代码运行的性能
生产环境下:

oneOf 优化
默认情况下,假设设置了7、8个loader,每一个文件都得通过这7、8个loader处理(过一遍),浪费性能,使用 oneOf 找到了就能直接用,提升性能
开启 babel 缓存
当一个 js 文件发生变化时,其它 js 资源不用变
code split 分割
将js文件打包分割成多个bundle,避免体积过大
懒加载和预加载
PWA 网站离线访问
多进程打包
开启多进程打包,主要处理js文件(babel-loader干的活久),进程启动大概为600ms,只有工作消耗时间比较长,才需要多进程打包,提升打包速度
dll 打包第三方库
code split将第三方库都打包成一个bundle,这样体积过大,会造成打包速度慢
dll 是将第三方库打包成多个bundle,从而进行速度优化

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值