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,那么这个实例将非…

spring boot 异步线程池的使用

创建Spring Boot项目 首先,你需要创建一个Spring Boot项目。你可以使用Spring Initializr(https://start.spring.io/)来快速生成项目结构。 添加异步支持依赖 在你的pom.xml文件中,确保你已经添加了Spring Boot的starter依赖&…

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. 可能遇到的问…

【机器学习】回归

文章目录 1. 如何训练回归问题2. 泛化能力3. 误差来源4. 正则化5. 交叉验证 1. 如何训练回归问题 第一步&#xff1a;定义模型 线性模型&#xff1a; y ^ b ∑ j w j x j \hat{y} b \sum_{j} w_j x_j y^​b∑j​wj​xj​ 其中&#xff0c;( w ) 是权重&#xff0c;( b )…

C++ 设计模式:状态模式(State Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 备忘录 状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式将状态的行为封装在独立的状态类中&#xff0c;并将状态的切换逻辑委托给这些…

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客户端执行流…

leetcode hot 100 杨辉三角

118. 杨辉三角 已解答 简单 相关标签 相关企业 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 class Solution(object):def generate(self, numRows):""":ty…

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; 在微服务系统…

【Python运维】构建基于Python的自动化运维平台:用Flask和Celery

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代IT运维中,自动化运维平台扮演着至关重要的角色,它能够显著提高运维效率,减少人为错误,并且增强系统的可维护性。本文将引导读者如…

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…