Webpack | vite | Rollup | Gulp | Grunt 比较

前言

  模块化管理工具和自动化构建工具是不同的。两者主要体现在侧重点不一样。自动化构建工具侧重于前端开发的 整个过程 的控制管理(像是流水线)。而模块化管理工具更侧重于模块打包,当然我们可以把开发中的所有资源(图片、js文件、css文件等)都可以看成模块。

  • Webpack

    webpack可以说是当前最流行的模块化管理工具和打包工具。其通过loader的转换,可以将任何形式的资源视作模块。它还可以将各个模块通过其依赖关系打包成符合生产环境部署的前端资源。它还可以将应用程序分解成可管理的代码块,可以按需加载。

打包原理:

解析各个模块的依赖关系 使用loader转换文件,使用plugin注入钩子,打包合并模块,最终生成bundle文件,使用express开启本地服务器, 浏览器请求的是bundle文件,也就是打包过后的文件。

优点:

  1. 基本之前gulp 可以进行的操作处理,现在webpack也都可以做;
  2. 同时支持热更新,支持tree shaking 、Scope Hoisting、动态加载、代码拆分、文件指纹、代码压缩、静态资源处理等;
  3. 支持多种打包方式。

    等等

缺点:

1.各个模块之间的依赖关系过于复杂 会导致打包速度很慢

2.使用热更新时,改动一个模块,其他有依赖关系的模块也会重新进行打包

3.不支持打包出esm格式的代码 (打包后的代码再次被引用时tree shaking 困难), 打包后亢余代码较多。


  • Vite

    和webpack差不离,vite是当下新兴的模块化管理工具和打包工具。它的本地启动速度相较于webpack快了很多,但是目前来说,vite还完全没有能够替换webpack的能力,不管是从社区还是从能力来讲,vite他本身还是太过脆弱,他的产生跟火热完全依赖于vue本身的热度。

打包原理:

使用koa开启本地服务器,没有webpack那样打包合并的过程,所以启动服务器很快,@vue/compiler-sfc会对模块进行编译 (修改一些引入文件的路径 css编译成js字符串)浏览器再请求编译好的模块。

缺点:

1.项目的开发浏览器要支持esmodule

2.不能识别commonjs语法

3.生态不及webpack,加载器、插件不够丰富

4.生产环境esbuild构建对于css和代码分割不够友好

5.没被大规模重度使用,会隐藏一些问题


  •  Rollup

Rollup 是一个模块打包工具, 可以将我们按照 ESM (ES2015 Module) 规范编写的源码构建输出如下格式:

  • IIFE: 自执行函数, 可通过 

你可能感兴趣的:(前端实用知识学习,webpack,gulp,前端,vite,打包工具)