2:Vite相较于webpack的优势

530 阅读2分钟

下面是 vite 官网的一段话

起因:我们的项目越来越大 ---> 构建工具 ( webpack ) 需要处理的 js 代码越来越多,这跟 webpack 的构建过程有关。

结果:构建工具需要很长的时间才能启动开发服务器 ( 也就是将项目运行起来需要很多时间 )

webpack构建原理

webpack支持多种模块化支持,因为有可能项目不止跑在浏览器端

// 这一段代码最终会到浏览器里去运行
const lodash = require("lodash"); // commonjs 规范
import Vue from "vue"; // es6 module

// webpack是允许我们这么写的

webpack编译原理:利用 AST 抽象语法分析工具 分析出写的 js 文件有哪些导入和导出的操作,构建工具是运行在服务端的,所以他可以对文件进行操作。webpack会将上述代码转化成以下形式

// webpack的一个转换结果
const lodash = webpack_require("lodash");
const Vue = webpack_require("vue");

转化过程大致是以下的流程 ( 简易 )

;(function (modules) {
    function webpack_require() {}
    // 入口是index.js
    // 通过webpack的配置文件得来的: webpack.config.js ./src/index.js
    modules[entry](webpack_require)
})({
    './src/index.js': webpack_require => {
        const lodash = webpack_require('lodash')
        const Vue = webpack_require('vue')
    }
})

因为webpack支持多种模块化,他一开始需要统一模块化代码,所以意味着他需要将所有的依赖文件全部读一遍

区别

  • 可以从vite官网两种图看出来,webpack是找到入口文件后,会读取所有的模块然后打包,最后启动成功。而vite因为是基于es modules的,所以他不需要统一模块化代码,在找到入口文件后会直接加载当前入口对应的模块,然后再使用到其他模块的时候动态加载,这样就节省了很大时间。
  • 那么竟然vite有这么大的优势,webpack会被vite淘汰吗?这是不可能的,因为两者侧重点不一样,webpack的兼容性更好,支持多种模块化,而vite是不允许书写commjs规范的模块的,注重与浏览器。
  • vite上手难度更低,webpack有很多配置项,loader,plugin等。