通俗易懂分析:Vite和Webpack的区别

news2024/12/29 10:14:22

1、对项目构建的理解

先从浏览器出发, 浏览器是由浏览器内核和JS引擎组成;浏览器内核编译解析html代码和css代码,js引擎编译解析JavaScript代码;所以从本质上,浏览器只能识别运行JavaScript、CSS、HTML代码。 而我们在编写项目时,用到了less,ts等扩展语言,vue等js框架,es6等低版本浏览器不能兼容的js语法,以及为了提高项目性能做的代码压缩,图片资源压缩等,把这些源代码转换成可以执行的JavaScript、CSS、HTML 代码称之为项目构建。 而vite和webpack是两种不同的项目构建打包工具。

项目构建包括以下内容:
代码转换:将 TypeScript编译成JavaScript 、将Less编译成css等。
文件优化:压缩JavaScript、 CSS、HTML 代码,压缩合并图片等。
代码分割: 提取多个页面的公共代码,提取首屏不需要执行部分代码让其异步加载。
模块合并:在采用模块化的项目里会有很多个模块和文件,需要通过构建功能将模块分类合并成一个文件。
热更新:监听本地源代码变化,自动重新构建、刷新浏览器。
代码校验:在代码被提交到仓库前需要校验代码是否符合规范,以及单元测试是否通过。
自动发布:更新代码后,自动构建出线上发布代码并传输给发布系统。

2、Vite和Webpack对比

  • 构建速度(项目启动速度)和热更新速度

    Vite 的构建速度和热更新速度更快,在大型项目中, Vite 甚至要比Webpack的构建速度快几十倍。

    原因分析:
    webpack: 分析依赖=> 编译打包=> 交给本地服务器进行渲染;
    		 随着模块的增多,打包出的bundle文件会越来越大,造成启动速度和热更新速度越来越慢;
    		 webpack用js代码编写。
    Vite   : 启动服务器=> 请求模块时按需动态编译显示。通过在一开始将应用中的模块区分为依赖和源码两类,
    		 请求某个模块时再对该模块进行实时编译,因为现代游览器本身支持ES-Module,所以会自动向依赖的Module发出请求;
    	     使用esbuild预构建依赖(esbuild也是一种js构建工具,不过是用go纯机器码语言编写),以原生的ES Modules向浏览器提供源码;
    

    构建原理图如下(vite官网抄的):
    在这里插入图片描述
    在这里插入图片描述

  • 上手度简易程度
    vite的配置相对来说更加简单,具体的配置方法请见官网:webpack中文官网 vite官网

  • 生态丰富度
    vite是尤大大在2021年时推出的新一代前端构建工具,相对于webpack来说,推出时间距今非常的短,缺少很多扩展功能,Webpack 的生态环境更加成熟,在社区中拥有广泛的支持和丰富的插件库。可以处理多种类型的文件和资源。

  • 浏览器兼容性
    Webpack 支持所有符合 ES5 标准 的浏览器(不支持 IE8 及以下版本)。webpack 的 import() 和 require.ensure() 需要 Promise。如果你想要支持旧版本浏览器,在使用这些表达式之前,还需要 提前加载 polyfill。
    默认情况下,Vite 的目标浏览器是指能够 支持原生 ESM script 标签 和 支持原生 ESM 动态导入 的。所以vite很多低版本的浏览器并不兼容,vite也可以对这个问题进行配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1462938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 CNN(卷积神经网络)部分 4.2 GRU(门控循环单元)部分 4.3 Attention机制部分 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版…

STM32基于寄存器编程

在51中让一个引脚输出高低电平只需要一个步骤,而在32中至少需要三个步骤。 开启对应GPIO的时钟配置对应IO口设置IO口 本文将一步步进阶的讲解,三种寄存器编程的方法。 使用地址赋值进行配置使用ST的宏进行配置只控制需要的位(位运算&#…

无/自监督去噪(2)——Noise2Noise (N2N) 理论分析(从损失函数入手)

目录 读前须知1. 前置知识——L1和L2 loss的特性2. additive Gaussian noise (spatial independent noise), L 2 L_2 L2​首杀3. brown Gaussian noise (spatial dependent noise), L 2 L_2 L2​双杀4. blind text removal, L 2 L_2 L2​导致结果偏灰, L 1 L_1 L1​前来破局…

刚开的抖店怎样推广?找主播带货,积累资源/渠道,拉动自然流量成交

我是王路飞。 2024年,依旧有很多人想入局抖音小店。 刚复工没几天,我就已经收到好多粉丝朋友的私信了,纷纷表示自己已经开通了抖店了,但是不会运营,现在新店应该怎样进行推广呢? 这篇内容就给你们详细说…

交换瓶子【第七届】【省赛】【A组】

题目描述 有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的情况,显然&#…

stm32——hal库学习笔记(DAC)

这里写目录标题 一、DAC简介(了解)1.1,什么是DAC?1.2,DAC的特性参数1.3,STM32各系列DAC的主要特性 二、DAC工作原理(掌握)2.1,DAC框图简介(F1)2.2…

用结构减法比较平面上4点结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有6个节点,AB训练集各由6张二值化的图片组成,A有4个点,B全是0.收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 如果行和列自由变换,迭代次数不…

英伟达推出免训练,可生成连贯图片的文生图模型

目前,多数文生图模型皆使用的是随机采样模式,使得每次生成的图像效果皆不同,在生成连贯的图像方面非常差。 例如,想通过AI生成一套图像连环画,即便使用同类的提示词也很难实现。虽然DALLE 3和Midjourney可以对图像实现…

【UI自动化】使用poco框架进行元素唯一定位

直接选择: 1.poco(text买入).click() 2.poco("android.widget.ImageView").click()相对选择、空间选择: 3.poco(text/name).parent().child()[0].click()正则表达式: 4.listpoco(textMatches".*ETF")今天主要想记录下…

门控时钟基础知识

什么是门控时钟 RTL中的门控时钟 通常情况下,时钟树由大量的缓冲器和反相器组成,时钟信号为设计中翻转率最高的信号,时钟树的功耗可能高达整个设计功耗40%。 加入门控时钟电路后,由于减少了时钟树的翻转,节省了翻转功…

windows下采用 nginx配置websocket支持wss流程

第一步、安装OpenSSL (1)下载OpenSSL软件包 地址:https://slproweb.com/products/Win32OpenSSL.html OpenSSL版本说明: Win64 OpenSSL v1.1.1wLight,安装Win64 OpenSSL v1.1.1w最常用的软件包 Win64 OpenSSL v1.1…

真实的数据如何获取

数据 在信息过载的互联网信息中挖掘有价值的信息是非常难的。 我自己退一步,要想寻求真实的信息也是非常难的。 那么关于个人博客具体浏览量的真实信息到底如何呢? 请看下图: 真相残酷,现实骨感。 核心 如果要抛开自欺欺人&a…

第二证券:5天骤降14!转融券市场再降温

转融券存量在快速下降。 到2月21日,转融券的存量股数为50.36亿股,近5个交易日内下降超20%。券商两融人士向券商我国记者表明,2月6日,证监会表明暂停转融券新增规划,存量逐渐了断,从目前的数据来看&#xf…

[corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape

前言 题目来源:竞赛官网 – 建议这里下载,文件系统/带符号的 vmlinux 给了 参考 [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape Exploiting poll_list Objects In The Linux Kernel – 原作者文章,poll_list 利用方式…

7 数据迁移至达梦数据库

无论使用哪种解决方案很大可能性都需要进行数据迁移,即将旧的非 达梦数据库的数据迁移到达梦数据库。 我们要把 Nacos 的数据或者 SQL 语句迁移到达梦数据库。借助 DM 数据迁移工具 ,完成 Nacos 配置数据表迁移到达梦数据库。

ros自定义action记录

文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build5. simple_action_server.py6. simple_action_client.py 测试 自定义action ros 版本:kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…

【9-1】实验——Neo4j实战操作

目录 一、Neo4j操作——CQL 1、常用CQL命令 2.常用CQL函数 3.图数据的形式 二、实战代码1.create命令 2. MATCH命令 三、使用neo4j工具导入知识图谱 1、工具:neo4j-admin 2、图谱导入: 3、更新图谱: 一、Neo4j操作——CQL 1、常用…

RMAN备份与恢复

文章目录 一、RMAN介绍二、全量备份三、增量备份0级备份1级增量备份累积性差量备份总结 四、压缩备份压缩备份介绍压缩备份操作压缩备份优缺点 五、异常恢复1、恢复前的准备2、恢复数据库 六、RMAN相关参数 一、RMAN介绍 RMAN(Recovery Manager)是Oracl…

啤酒:精酿啤酒与炸鸡的香脆搭配

炸鸡与啤酒,这对美食界的黄金搭档,早已成为了人们心目中的经典。而当Fendi Club啤酒遇上炸鸡,一场味觉的狂欢就此展开。 Fendi Club啤酒,以其醇厚的口感和淡淡的麦芽香气而著称。这款啤酒在酿造过程中采用了特别的工艺&#xff0c…

Android加载富文本

直接用webview加载: package com.example.testcsdnproject;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.webk…