面试题答案
一键面试任务定义差异
- Webpack:主要基于模块打包的概念。它使用
webpack.config.js
文件来配置,核心是通过各种loader
处理不同类型的文件(如将ES6转换为ES5、处理CSS等),并使用plugins
进行更广泛的功能扩展,如代码压缩、提取CSS等。配置侧重于模块的解析、转换和输出规则。 - Grunt:使用
Gruntfile.js
文件定义任务。任务被定义为一个个独立的单元,每个任务都有自己的配置选项。例如,压缩CSS任务、编译LESS任务等。任务之间相对独立,通过在Gruntfile
中按顺序罗列任务来组织整个构建流程。
执行方式差异
- Webpack:以模块依赖分析为驱动。它从入口文件开始,递归解析依赖的模块,根据配置的
loader
和plugins
对模块进行处理,最后输出打包后的文件。Webpack执行构建过程是基于模块图的生成和处理,更注重模块的打包和优化。 - Grunt:按照在
Gruntfile
中定义的任务顺序依次执行。每个任务都是独立执行的,任务之间通过文件系统来传递数据。例如,先执行编译LESS任务生成CSS文件,然后再执行压缩CSS任务处理前面生成的文件。Grunt的执行方式相对简单直接,基于任务队列的依次执行。