vite与webpack的打包原理:

vite: 基于游览器原生ES Module,利用游览器解析import,服务器端按需编译返回

webpack: 逐级递归识别依赖,构建依赖图谱->转化AST语法树->处理代码->转换为游览器可识别的代码

vite相比webpack的优势:

开发环境中,无需打包操作,可快速冷启动:

由于vite启动的时候不需要打包,也就无需分析模块依赖、编译代码;

从底层原理上来说,vite是基于esbuild预构建依赖,而esbuild是采用go语言编写,go语言的操作是纳秒级别的

webpack是原生js编写的,js是以毫秒计数的,所以vite比webpack启动快很多;

真正的按需编译,不再等待整个应用完成:

webpack:                                                                                                                                vite:

       

当游览器请求需要的模块时,再对模块进行编译,这种按需动态编译的模式,极大程度缩短了编译时间,当项目越大,文件越多时,vite的开发优势就越明显

轻量快速的热重载(HMR):

vite在HMR方面,当某个模块内容改变时,让游览器重新请求该模块即可,而不用像webpack那样重新将该模块的所有依赖重新编译

vite相比webpack的劣势:

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

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

项目开发游览要支持ES Module,不能识别CommonJS语法

参考: 

https://blog.csdn.net/huangpb123/article/details/123313589

https://blog.51cto.com/xuedingmaojun/2967713?ivk_sa=1024320u

https://www.knowbaike.com/it/13131.html

webpack与vite的对比的更多相关文章

  1. vue-cli3 vue2 保留 webpack 支持 vite 成功实践

    大家好! 文本是为了提升开发效率及体验实践诞生的. 项目背景: 脚手架:vue-cli3,具体为 "@vue/cli-service": "^3.4.1" 库: ...

  2. 一篇文章说清 webpack、vite、vue-cli、create-vue 的区别

    webpack.vite.vue-cli.create-vue 这些都是什么?看着有点晕,不要怕,我们一起来分辨一下. 先看这个表格: 脚手架 vue-cli create-vue 构建项目 vite ...

  3. Webpack与Vite热更新差异对比

    随着项目的日渐迭代,项目整体的代码量也会越来越多,从而导致项目体积越来越大:在Webpack时代,很多人会对历史项目(巨型项目)感到头疼,因为往往巨型项目在本地开发调试的时候会因为本地代码的修改触发H ...

  4. webpack不同devtools打包对比

    测试所用的配置文件: const path = require('path'); const HtmlWebpackPlugin= require('html-webpack-plugin'); co ...

  5. webpack 项目接入Vite的通用方案介绍(上)

    愿景 希望通过本文,能给读者提供一个存/增量项目接入Vite的点子,起抛砖引玉的作用,减少这方面能力的建设成本 在阐述过程中同时也会逐渐完善webpack-vite-serve这个工具 读者可直接fo ...

  6. antd+react项目迁移vite的解决方案

    antd+react+webpack往往是以react技术栈为主的前端项目的标准组合,三者都有成熟的生态和稳定的表现,但随着前端圈的技术不断革新,号称下一代构建平台vite2的发布,webpack似乎 ...

  7. Vite详解

    vite 目录 一.推荐两个插件插件 Volar Vue 3 Snippets 二.vite简介 优势分析 浏览器支持 三.vite搭建vue3.x项目 1.创建项目 2.集成Vue-Router 3 ...

  8. Webpack vs Rollup

    本文由作者余伯贤授权网易云社区发布. 2017年4月份的时候,Facebook将React的构建工具换成了Rollup.很多人就有疑问了,Webpack不也是Facebook团队开发的吗,为什么不使用 ...

  9. 爱搞事情的webpack

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency g ...

随机推荐

  1. python 基础数据类型汇总

    数据类型小结(各数据类型常用操作) 一.数字/整型int int()强行转化数字 二.bool类型False&True bool()强行转化布尔类型. 0,None,及各个空的字符类型为Fal ...

  2. 学习Haproxy (七)

    haproxy是个高性能的tcp和http的反向代理.它就是个代理.不像nginx还做web服务器 官网地址为www.haproxy.org nginx的优点和缺点 ? 1 2 3 4 5 6 7 8 ...

  3. js技术之循环for

    案例:把所有单词以空格为分割并将首字母转为大写 <!DOCTYPE html><html lang="en"><head> <meta c ...

  4. swagger的作用和配置使用

    纯API项目中 引入swagger可以生成可视化的API接口页面     引入包 nuget包: Swashbuckle.AspNetCore(最新稳定版) 配置 1.配置Startup类Config ...

  5. (stm32f103学习总结)—stm32外部中断

    一.外部中断介绍 1.1 EXTI简介 EXTI简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器.EXTI的每根输入线都可单独进行配置,以 ...

  6. mplab使用小知识

    选择Debugger->Select Tool->MPLAB SIM可以使用MPALB中的软件调试 StopWatch可以观察程序运行时间 注意:在测试时需要注意红圈内晶振是不是和单片机上 ...

  7. 浅谈JavaScript原型与原型链

    对于很多前端开发者而言,JavaScript的原型实在是很让人头疼,所以我这边就整理了一下自己对应原型的一点理解,分享给大家,供交流使用 原型 说起原型,那就不得不说prototype.__proto ...

  8. react开发教程(三)组件的构建

    什么是组件 组件化就好像我们的电脑装机一样,一个电脑由显示器.主板.内存.显卡.硬盘,键盘,鼠标.... 组件化开发有如下的好处:降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快 ...

  9. tkinter GUI编程

    tkinter编程概述 tkinter模块包含在Python的基本安装包中.使用tkinter模块编写的GUI程序是跨平台的.可在windows.UNIX.Linux以及Macintonsh OS X ...

  10. k8s pod 在迁移zookeeper时出现的问题

    一次迁移中出现的问题,因为要搬迁机房,集群中的节点服务器分布在两个机房,通过专线打通了,现在需要整体都迁移到其中一个机房,所以pod要进行迁移,机器资源也比较紧张,在迁移中zookeeper迁移出现问 ...