0%

javascript-interview-questions-06(frontend tools)

什么是Webpack?

Webpack是一个打包工具,它是基于Node.js的,也就是说它是用JS写的,所以它的速度比较慢,但是它的功能非常强大。而其他的打包工具,比如ESBuild是用Go语言书写的,速度会快很多。

为什么需要使用Webpack呢?
在前端技术日益发展的今天,前端技术极大丰富,各种框架和库层出不穷,比如Angular/React/Vue等,我们的前端项目可能是用不同的框架书写的,可能还要支持typescript,我们还可能使用了不同的CSS预处理器,比如SASS/LESS等,而浏览器是不懂框架的语法的,需要转换成原生JS,浏览器也不懂typescript,也需要转换成JavaScript,也不懂SASS/LESS语法,需要转换成原生的CSS。

此外,如果你使用了新的ES语法,而浏览器此时尚未支持该语法,那么Webpack也可以帮你转换成浏览器支持的语法。

Webpack的主要功能有:

  1. 打包JS、CSS、图片等资源文件。
  2. 代码转换,比如ES6转ES5、SCSS转CSS等。对于比较新的语法,Webpack可以弥补浏览器未实现的部分。
  3. 代码分割,将代码分割成多个文件,按需加载。- Lazy loading,将需要lazy load的模块单独打包成一个文件,当需要的时候再加载。
  4. 代码压缩,减少文件体积。
  5. 代码优化,比如去除无用代码、去除重复代码等。- Tree shaking
  6. Webpack-dev-server - 本地开发服务器,实时刷新。

Webpack中的hash、chunkhash、contenthash有什么区别?