当前位置: 首页 > news >正文

Vue3中Vite的介绍与应用

简单来说,Vite 是一个现代化的前端构建工具,它为开发服务器提供极速的热更新,并优化生产构建。它由 Vue.js 的作者尤雨溪创建,现在已经成为 Vue 3 项目官方推荐的构建工具,取代了之前的 Vue CLI(基于 Webpack)。


1. 核心定位:为什么需要 Vite?

在 Vite 出现之前,大多数项目使用 Webpack。Webpack 的工作方式是:先打包,再启动开发服务器。当你的项目越来越大、模块越来越多时,这个“打包”的过程会变得非常慢,有时启动开发服务器需要几十秒甚至几分钟,严重影响开发效率。

Vite 的出现就是为了解决这个开发环境的启动速度和热更新(HMR)速度问题。


2. 核心原理:它为什么快?

Vite 这个词在法语中是“快”的意思,它的快主要源于两个核心思想:

a) 利用浏览器原生 ES 模块(ESM)

  • Vite 在开发环境中,完全不需要打包你的源代码。它直接启动一个服务器,将你的代码文件(如 .vue.js.css)通过 ES 模块的方式提供给浏览器。

  • 浏览器会按需向服务器发起请求,Vite 服务器只在接到请求时才对文件进行必要的转换(例如,将 .vue 文件拆解成 templatescriptstyle 三部分),然后返回给浏览器。

  • 这意味着启动服务器几乎是瞬间完成的,因为根本不需要进行庞大的打包操作。

b) 依赖预构建(Dependency Pre-bundling)

  • 你项目中的第三方依赖(如 vuelodash-es)通常是由大量小文件组成的 ES 模块。大量的 HTTP 请求会拖慢页面加载速度。

  • Vite 使用 Esbuild(一个用 Go 语言编写的极速打包工具)将你的第三方依赖预构建为单个的 ES 模块。

  • 这样做有两个好处:

    1. 将大量内部模块请求合并为单个请求,减少 HTTP 请求数量,优化加载性能。

    2. 将 CommonJS/UMD 格式的依赖转换为 ESM 格式,让浏览器可以直接使用。


3. Vite 的主要特点

  1. 极速的服务启动:利用原生 ESM,冷启动通常在一秒内完成。

  2. 轻量快速的热更新(HMR):只更新修改的模块,而不是重新打包整个项目,因此热更新速度极快,几乎感觉不到延迟。

  3. 丰富的功能:对 TypeScript、JSX、CSS 等有开箱即用的支持。

  4. 优化的构建:对于生产环境,Vite 使用 Rollup 进行打包。Rollup 以其高效的 Tree-shaking 和干净的输出而闻名,可以生成高度优化的静态资源。

  5. 通用的插件 API:Vite 的插件接口与 Rollup 兼容,有大量社区插件可用,并且可以复用很多 Rollup 插件。

  6. 高度可定制:通过其插件 API 和 JavaScript API 提供了高度的可扩展性。


4. Vite 与 Vue 3 的关系

  • 完美搭档:Vite 由 Vue 团队打造,天生就对 Vue 的单文件组件(SFC)提供了顶级的支持,包括 .vue 文件的解析、热更新等。

  • 官方推荐:创建新的 Vue 3 项目时,官方工具 create-vue(执行 npm create vue@latest)会默认推荐并使用 Vite 作为构建工具。

  • 最佳体验:使用 Vite 开发 Vue 3 项目,能获得目前最流畅、最快速的开发体验。


总结对比

特性Vite (开发环境)传统 Webpack (开发环境)
启动速度极快(利用原生 ESM,无需打包)慢(需要先完整打包)
热更新速度极快(只编译修改的模块)较慢(需要重新打包变化的 chunk)
生产构建使用 Rollup(打包优化好)使用 Webpack 自身
工作原理基于浏览器原生 ES 模块基于打包捆绑(Bundle)

如何开始一个使用 Vite 的 Vue 3 项目?

最快的方式是使用官方命令:

bash

npm create vue@latest

这条命令会启动官方项目脚手架工具 create-vue,它会询问你是否需要一些可选功能(如 TypeScript、Pinia、路由等),然后自动为你创建一个基于 Vite 的、配置好的 Vue 3 项目。

然后进入项目目录,安装依赖并启动:

bash

cd your-project-name
npm install
npm run dev

几秒钟后,一个极速的 Vue 3 开发服务器就启动起来了。

总而言之,Vite 是新一代的前端构建工具,它极大地提升了开发体验,尤其是与 Vue 3 配合使用时,是当前开发 Vue 3 应用的首选和事实标准。


文章转载自:

http://18irLlea.xyLxm.cn
http://4tzWjiQD.xyLxm.cn
http://xUEznmfq.xyLxm.cn
http://8miUMnqT.xyLxm.cn
http://513OWKFS.xyLxm.cn
http://jBo4yieK.xyLxm.cn
http://ryTdIk8y.xyLxm.cn
http://wEPNM8BW.xyLxm.cn
http://sNRDrPJ8.xyLxm.cn
http://UZWLbM6t.xyLxm.cn
http://OjVCaX9g.xyLxm.cn
http://zoQnk1Ef.xyLxm.cn
http://GxT3G1f7.xyLxm.cn
http://CLkUGGAW.xyLxm.cn
http://RfPxKAz7.xyLxm.cn
http://Y7s7JoiA.xyLxm.cn
http://bF4gUVIB.xyLxm.cn
http://WDdJfaBm.xyLxm.cn
http://dATe86WC.xyLxm.cn
http://Kw3CIrrA.xyLxm.cn
http://uoU25Rma.xyLxm.cn
http://IcC0pzYv.xyLxm.cn
http://RxvybOl3.xyLxm.cn
http://IY732iH5.xyLxm.cn
http://tagCtVt3.xyLxm.cn
http://I2i8TxBt.xyLxm.cn
http://Z676WHyx.xyLxm.cn
http://JId8XFF6.xyLxm.cn
http://FcxhsdEB.xyLxm.cn
http://Y8uhfF1U.xyLxm.cn
http://www.dtcms.com/a/371048.html

相关文章:

  • 【C++ 11 模板类】tuple 元组
  • 高维前缀和
  • 脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维
  • 09-FreeRTOS任务调度
  • 详解 ELO 评分系统
  • TDengine 时间函数 WEEKDAY() 用户手册
  • 计算机网络:物理层---数据通信基础知识
  • 为什么固态硬盘断电后数据还能保存不丢失?
  • KDD 2025 | TIDFormer:针对时序交互动态机制,构建动态图 Transformer 模型
  • 【FastDDS】Persistence Service
  • 整车无线布置的综述
  • 基于Spring Boot + Vue3的办公用品申领管理系统
  • python 逻辑运算练习题
  • 残差去噪扩散模型
  • browser use完整梳理
  • 基于WFOA与BP神经网络回归模型的特征选择方法研究(Python实现)
  • Python自学12 - 常用数据结构之字典
  • 【基础-单选】关于bundleName,下列说法正确的是?
  • 支持多材质密度设置的金属重量计算使用指南
  • Qemu-NUC980(四):SDRAM Interface Controller
  • 输入1.8~5.5V 输出1A 超级适合软包锂电池产品的DCDC升降压芯片TX4401
  • javascript 国际化方法
  • Spring核心-Bean周期
  • 【Android 消息机制】Handler
  • JobManager 初始化流程解析
  • 天气预报云服务器部署实战
  • 【C++ 双指针技巧】
  • Leetcode77:组合问题
  • Java多线程学习笔记
  • 命令行工具集 CDO 功能总结