Vite:新时代前端构建工具的最佳选择

Vite:新时代前端构建工具的最佳选择

随着前端技术的快速发展,传统的构建工具(如 Webpack)因其较慢的构建速度和复杂的配置逐渐暴露出局限性。Vite 作为一款基于现代浏览器的快速构建工具,以其极快的启动速度和简单的配置脱颖而出,成为前端开发的新宠。

本文将深入介绍 Vite 的特点、核心原理、常用配置以及在实际项目中的应用。


1. 什么是 Vite?

Vite 是由 Vue.js 作者尤雨溪(Evan You)开发的一款新型前端构建工具,主要针对现代浏览器的原生 ES 模块支持进行优化。

1.1 Vite 的核心特点

  1. 极速冷启动:基于原生 ES 模块,无需预打包所有代码。
  2. 即时热更新(HMR):通过模块热替换(Hot Module Replacement),快速更新页面内容。
  3. 极简配置:内置支持 TypeScript、CSS 预处理器(如 SASS、LESS)和 JSX。
  4. 生产构建优化:使用 Rollup 作为打包器,生成高性能的生产环境代码。

2. 为什么选择 Vite?

2.1 传统构建工具的局限

传统构建工具(如 Webpack)在开发阶段需要将所有代码预打包,导致冷启动速度缓慢,特别是在大型项目中表现更为明显。

2.2 Vite 的优势

  • 按需加载:Vite 利用浏览器的原生 ES 模块支持,仅加载需要的文件。
  • 现代化支持:默认支持 ES6+ 语法、TypeScript 和 CSS 模块。
  • 生态系统友好:兼容 Vue、React 等主流框架,并提供官方插件。

3. Vite 的核心原理

Vite 的高性能主要来源于以下两个核心机制:

3.1 原生 ES 模块

在开发环境中,Vite 不进行代码的预打包,而是直接利用浏览器的原生 ES 模块加载代码。这种方式避免了初次加载的构建时间。

3.2 Rollup 打包

在生产环境中,Vite 使用 Rollup 对代码进行优化打包,支持代码分割和树摇(Tree Shaking),生成高效的静态资源。


4. 如何使用 Vite?

以下是一个快速上手 Vite 的步骤:

4.1 安装 Vite

使用 npm 创建一个基于 Vite 的项目:

npm create vite@latest my-project
cd my-project
npm install

4.2 启动开发服务器

运行以下命令启动 Vite 的开发服务器:

npm run dev

浏览器将自动打开 http://localhost:5173


5. Vite 的常用配置

Vite 提供了高度灵活的配置文件,默认配置文件是 vite.config.js

5.1 配置基本路径

通过 base 属性设置项目的基础路径:

export default {base: '/my-app/',
};

5.2 配置别名

使用 resolve.alias 定义路径别名:

import { defineConfig } from 'vite';export default defineConfig({resolve: {alias: {'@': '/src',},},
});

5.3 CSS 预处理器支持

在项目中支持 LESS 或 SASS:

npm install -D sass

修改 vite.config.js

export default {css: {preprocessorOptions: {scss: {additionalData: `@import "@/styles/global.scss";`,},},},
};

6. 在实际项目中的应用

6.1 使用 Vite 构建 Vue 项目

Vite 是 Vue 官方推荐的构建工具,提供了完善的支持:

npm create vite@latest my-vue-app --template vue

6.2 使用 Vite 构建 React 项目

Vite 同样支持 React:

npm create vite@latest my-react-app --template react

6.3 集成第三方插件

Vite 的插件系统基于 Rollup,可直接使用 Rollup 插件或 Vite 官方插件。例如:

安装 Vue 插件:

npm install @vitejs/plugin-vue

vite.config.js 中引入插件:

import vue from '@vitejs/plugin-vue';export default {plugins: [vue()],
};

7. 性能优化

7.1 按需加载

在组件中按需引入模块,而非一次性加载所有依赖。

7.2 使用动态导入

通过动态导入减少打包体积:

const module = await import('./module.js');

7.3 预构建依赖

Vite 会对第三方依赖进行预构建优化,确保更快的加载速度。


8. 总结

Vite 作为一款新型构建工具,凭借其极速的开发体验和强大的生态系统,成为前端开发的新标准。无论是小型项目还是大型项目,Vite 都能提供极高的开发效率和性能优化能力。

希望本文能帮助你快速上手 Vite,并在项目中充分发挥其优势。如果觉得有用,请点赞、收藏并分享!

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

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

相关文章

使用npm包的工程如何引入mapboxgl-enhance/maplibre-gl-enhance扩展包

作者:刘大 前言 在使用iClient for MapboxGL/MapLibreGL项目开发中,往往会对接非EPSG:3857坐标系的地图,由于默认不支持,因此需引入mapboxgl-enhance/maplibre-gl-enhance扩展包。 在使用Vue等其他框架,通过npm包下载…

应急指挥系统总体架构方案

引言 应急指挥系统总体架构方案旨在构建一个高效、智能的应急管理体系,以应对自然灾害、事故灾难等突发事件,保障人民生命财产安全。 背景与挑战 近年来,安全生产形势严峻,自然灾害事故频发,对应急指挥系统的要求越…

如何用CSS3创建圆角矩形并居中显示?

在网页设计中,圆角矩形因其美观和现代感而被广泛使用,居中显示元素也是一个常见的需求。今天,我们将学习如何使用CSS3的border-radius属性来创建圆角矩形,并将其居中显示在页面上。 如果你正在学习CSS,那么这个实例将非…

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中,控制材质的参数值和向量值

canvas+fabric实现时间刻度尺(二)

前言 我们前面实现了时间刻度尺&#xff0c;鼠标移动显示时间&#xff0c;接下来我们实现鼠标点击某个时间进行弹框。 效果 实现 1.监听鼠标按下事件 2.编写弹框页面 3.时间转换 <template><div><canvas id"rulerCanvas" width"1200"…

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中&#xff0c;我们论述了局域网SIP坐席通过手机外呼出去时&#xff0c;手机中主副卡的呼叫调度策略。 但…

离线语音识别+青云客语音机器人(幼儿园级别教程)

1、使用步骤 确保已安装以下库&#xff1a; pip install vosk sounddevice requests pyttsx3 2、下载 Vosk 模型&#xff1a; 下载适合的中文模型&#xff0c;如 vosk-model-small-cn-0.22。 下载地址&#xff1a; https://alphacephei.com/vosk/models 将模型解压后放置在…

Streaming Dense Video Captioning

原文出处 CVPR 原文链接 [2404.01297] Streaming Dense Video Captioninghttps://arxiv.org/abs/2404.01297 原文笔记 What 1、提出了一种基于聚类传入token的新记忆模块&#xff0c;该模块可以处理任意长的视频&#xff0c;并且可以在不访问视频所有帧的情况下处理视频(…

TCP 连接:三次握手与四次挥手

TCP 协议&#xff0c;全称为“传输控制协议”。 1. TCP 协议段格式 给出几个定义 &#xff1a; 16位源端口号 &#xff1a;用于标识发送端的应用程序。 16位目的端口号 &#xff1a;用于标识接收端的目标应用程序。 32位序号 &#xff1a;用于标识发送的每一个字节流中的第一…

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署 7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问…

redis开发与运维-redis0401-补充-redis流水线与Jedis执行流水线

文章目录 【README】【1】redis流水线Pipeline【1.1】redis流水线概念【1.2】redis流水线性能测试【1.2.1】使用流水线与未使用流水线的性能对比【1.2.2】使用流水线与redis原生批量命令的性能对比【1.2.3】流水线缺点 【1.3】Jedis客户端执行流水线【1.3.1】Jedis客户端执行流…

Uncaught ReferenceError: __VUE_HMR_RUNTIME__ is not defined

Syntax Error: Error: vitejs/plugin-vue requires vue (>3.2.13) or vue/compiler-sfc to be present in the dependency tree. 第一步 npm install vue/compiler-sfc npm run dev 运行成功&#xff0c;本地打开页面是空白&#xff0c;控制台报错 重新下载了vue-loa…

【微服务】【Sentinel】认识Sentinel

文章目录 1. 雪崩问题2. 解决方案3. 服务保护技术对比4. 安装 Sentinel4.1 启动控制台4.2 客户端接入控制台 参考资料: 1. 雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。动图演示&#xff1a; 在微服务系统…

STM32完全学习——使用定时器1精确延时

一、定时器的相关配置 首先一定要是递减定时器&#xff0c;递增的不太行&#xff0c;控制的不够准确&#xff0c;其次在大于10微秒的延时是非常准确的&#xff0c;小于的话&#xff0c;就没有那没准&#xff0c;但是凑合能用。误差都在一个微秒以内。使用高级定时器也就是时钟…

connect to host github.com port 22: Connection timed out 的解决方法

原因是 Github 被 GFW 屏蔽了。 Windows 系统&#xff0c;打开 C:\Windows\System32\drivers\etc&#xff0c;复制其中的 hosts 文件至桌面&#xff0c;用文本编辑器或者其他工具打开。 复制以下内容进去&#xff1a; 140.82.114.4 github.com 151.101.1.6 github.global.ss…

常见的排序算法过程和比较分析

比较分析 排序类别排序算法时间复杂度&#xff08;最好&#xff09;时间复杂度&#xff08;最坏&#xff09;时间复杂度&#xff08;平均&#xff09;辅助空间复杂度稳定性插入排序直接插入排序O(n)O(n)O(n)O(1)稳定插入排序折半插入排序O(n)O(n)O(n)O(1)稳定插入排序希尔排序…

【QGIS入门实战精品教程】7.3:QGIS制作千层饼(DEM+等高线+影像+TIN)

文章目录 一、效果展示二、数据准备三、制作过程1. 打开软件2. 添加图层3. 制作千层饼一、效果展示 二、数据准备 订阅专栏后,从专栏配套案例数据包中的7.3.rar中获取。 1. dem 2. 影像 3. 等高线 4. tin 三、制作过程 1. 打开软件 打开QGIS软件。 QGIS软件主界面。

如何将CSDN文章 导出为 PDF文件

一、首先&#xff0c;打开我们想要导出为 PDF格式的 CSDN文章&#xff0c;以下图为例。 二、按 F12 调出浏览器调式模式后&#xff0c;选择 控制台 三、在控制台处粘贴代码 代码&#xff1a; (function(){ use strict;var articleBox $("div.article_content"…

HTML——54. form元素属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>form元素属性</title></head><body><!--form标签用于创建一个表单&#xff0c;会将里面的内容一起发送服务器&#xff0c;结构类似于表格--><!-…

告别 $arr[0]: PHP 和 Laravel 中更优雅的数组处理方式

你是否曾经历过这样的惊魂时刻&#xff1a;线上代码突然崩溃&#xff0c;只因访问了一个不存在的数组元素&#xff1f;或者更糟的是&#xff0c;应用开始疯狂抛出错误&#xff0c;而你却毫无头绪&#xff1f;这一切的罪魁祸首可能就是看似人畜无害的硬编码数组索引&#xff0c;…