一文读懂Vite和Webpack的区别?

news/2024/10/20 20:44:53/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、`webpack`是什么?
  • 二、webpack如何工作?
  • 三、`Vite`是什么?
  • Vite和Webpack的`区别`?


提示:以下是本篇文章正文内容,下面案例可供参考

一、webpack是什么?

webpack是一个基于打包器的构建工具,同一个入口文件的代码会打包成一个Bundle文件
webpack长期以来的一个痛点就是对于大规模应用的应用启动和热更新的速度很慢
webpack
当文件发生变动时,整个js Bundle文件会被webpack重新构建,这也就是为什么使用webpack的大规模应用启动时和热更新时速度慢的原因,造成了用户很差的体验

二、webpack如何工作?

webpack的打包过程:

  • 从一个入口文件开始,基于代码中的所有的import,export,require构建依赖树
  • 编译JS/CSS等相关模块
  • 使用算法排序、重写、连接代码
  • 优化

开发环境的webpack:

  • 打包所有的代码
  • 启动webpack-dev-server托管打包好的代码
  • 启动wbesocket处理热更新HMR

注意:应用规模越大,启动和热更新的代码越慢,即使启动了热更新,每次当代码更新时也需要生产Bundle文件

三、Vite是什么?

vite是旨在提升开发者体验的下一大JavaScript构建工具,核心借助了浏览器的原生ES Modulesesbuild,这样的将代码编译成native code的打包工具
vite

Vite主要由两方面组成:

  1. 一个开发服务器,基于ESM提供丰富的内建能力,比如速度快到惊人的模块热更新HMR
  2. 一套构建指令,使用rollup进行代码的打包,且零配置即可输出用于生产环境的高度优化的静态代码

Vite和Webpack的区别

  • webpack服务器启动速度比vite慢,由于vite启动的时候不需要打包,也就无需分析模块依赖、编译,所以启动速度非常快。当浏览器请求需要的模块时,再对模块进行编译,这种按需动态编译的模式,极大缩短了编译时间,当项目越大,文件越多时,vite的开发时优势越明显
  • vite热更新比webpack快
  • vite在·HRM·方面,当某个模块内容改变时,让浏览器去重新请求该模块即可,而不是像webpack重新将该模块的所有依赖重新编译,
  • vite使用esbuild(Go 编) 预构建依赖,而webpack基于nodejs,比node快 10-100 倍

http://www.ppmy.cn/news/90017.html

相关文章

基于 JMeter 实现 WEB 项目性能测试,环境搭建与测试用例编写

目录 前言: 一、JDK 安装 二、Tomcat 安装 三、Redis 安装 四、数据库安装 五、WEB 项目搭建 六、性能测试项目搭建 七、总结 前言: 性能测试是软件开发中必不可少的一环,它可以帮助开发者提高程序的稳定性,优化性能&…

简单易懂:Ajax入门实例详解(登录功能)

前言:不积跬步无以至千里,不积小流无以成江河! 废话不多,以最简练的语言和实例初步了解Ajax! 一、Ajax简介 Ajax(Asynchronous JavaScript and XML)是一种基于Web技术的编程实现方式&#xff0c…

anr log打印流程---Java层

前言 本问介绍一下anr之后,系统打印log的流程。加深对anr问题的理解。 anr触发原理分析可以看看这个文章http://gityuan.com/2017/01/01/input-anr/ cpp代码比较多,我选择放弃了。从java层log往后看吧。。。 ANR Log anr触发在native层,…

11-FastDFS文件服务器 和 Nginx

1、什么是FastDFS 1、开源的轻量级分布式文件系统,用于解决大数据量存储和负载均衡等问题。 2、优点: 支持HTTP协议传输文件(结合Nginx); 对文件内容做Hash处理,节约磁盘空间; 支持负载均衡、整体性能较佳。 3、FastDFS的二个角色:跟踪服务器(Tracker)、存储服务器…

ApplicationRunner使用

本文来说下CommandLineRunner和ApplicationRunner的使用 文章目录 ApplicationRunner使用示例程序结果 CommandLineRunner使用示例程序结果 ApplicationListener触发时机使用实例程序结果注意问题 ApplicationRunner 使用起来很简单,只需要实现CommandLineRunner或者…

第三十四回:AlertDialog Widget

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Dismissible Widget相关的内容,本章回中将介绍 AlertDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们介绍的AlertDialog是指程序中弹出的确认窗口,其实我们在上一章回中删…

网易易盾流量多发反外挂落地实践

背景及目的 环境迁移 反外挂服务建德机房线上迁移,采取的方案是:建德机房独立部署一套完整的集群,统一经由完整的性能测试、故障演练、功能回归后,通过线上分阶段切换流量的方式来切服务。QA 需要比对验证 2 个不同环境下核心接口…

多目标遗传算法NSGA-II改进策略

上篇写道了关于多目标遗传算法NSGA-II原理详解及算法代码实现,本文将继续在这篇文章的基础上更深一步的向前探索,探索方向为: 基于NSGA-II算法的固有缺点,着重对其算法提出改进策略,并予以代码实现。同样,本…