Vite基本概要

server/2024/11/25 17:30:16/

一、Vite 简介

Vite 是一种新型的前端构建工具,旨在为现代 web 开发提供更快、更精简的开发体验。它由尤雨溪(Vue.js 的作者)团队开发,在当下的前端项目中被广泛应用,尤其适合基于现代 JavaScript 框架(如 Vue、React 等)构建的项目。

与传统的构建工具(如 Webpack)相比,Vite 利用了浏览器原生支持的 ES 模块(ES Modules),在开发阶段不需要像传统方式那样将所有模块提前打包,而是按需进行编译和加载,从而实现了极快的冷启动速度和模块热替换(HMR),大大提升了开发效率。

二、Vite 的核心特点

1. 快速的冷启动

在传统构建工具启动开发服务器时,往往需要对整个项目的代码进行打包分析等一系列复杂操作,耗时较长。而 Vite 基于 ES 模块的特性,在启动时只需启动一个轻量级的开发服务器,然后直接将浏览器指向源文件,浏览器会按照 ES 模块的规则自动去加载依赖,无需提前全量打包,所以能在瞬间启动项目,开发者可以快速进入开发状态。

例如,对于一个中大型的 Vue 项目,使用 Webpack 启动开发服务器可能需要数秒甚至十几秒,而 Vite 往往能在几百毫秒内就启动完成。

2. 高效的模块热替换(HMR)

当我们在开发过程中修改了代码,Vite 能够精准地定位到发生变化的模块,并仅仅更新该模块对应的内容在浏览器中的显示,无需刷新整个页面。这使得开发者可以实时看到代码修改后的效果,保持开发的连贯性,进一步提高开发效率。

比如在修改一个 Vue 组件的样式或者逻辑时,修改后几乎立即就能在浏览器中看到更新后的样子,操作体验非常流畅。

3. 原生 ES 模块支持

Vite 充分利用了现代浏览器原生支持 ES 模块这一特性。在开发阶段,Vite 直接将代码以 ES 模块的形式提供给浏览器,浏览器会按照 ES 模块的规范去解析和加载依赖,减少了中间转化的成本。不过在生产环境下,Vite 还是会对代码进行打包优化等处理,以保证最佳的性能和兼容性。

4. 插件化架构

Vite 拥有丰富的插件生态,通过插件可以轻松扩展其功能,满足各种不同的项目需求。无论是对特定文件类型的处理、优化开发体验,还是与第三方工具的集成等,都可以通过编写或使用现有的插件来实现。

例如,有插件可以帮助优化 CSS 的处理、实现对 SVG 文件的特殊处理,或者将项目与后端 API 进行更好的联调等。

三、Vite 的基本使用

1. 安装

要使用 Vite,首先需要全局安装它的脚手架工具:

npm install -g create-vite
# 或者使用 yarn
yarn global add create-vite

安装完成后,就可以用它来创建新项目了。

2. 创建项目

使用以下命令创建一个基于 Vite 的项目(以 Vue 项目为例):

# 创建一个基于 Vue 的 Vite 项目,项目名称为 my-vite-project
create-vite my-vite-project --template vue

这里的 --template 参数可以指定不同的模板,除了 vue,还可以选择 reactpreact 等,根据自己的项目框架需求来定。

创建完成后,进入项目目录:

cd my-vite-project
3. 安装项目依赖并启动开发服务器

在项目目录下,运行以下命令安装依赖:

npm install
# 或者
yarn install

然后启动开发服务器:

npm run dev
# 或者
yarn dev

此时,Vite 会启动开发服务器,并且在控制台输出项目运行的地址(一般是 http://localhost:3000 之类的),打开浏览器访问该地址,就能看到项目运行起来了。

4. 项目结构

一个典型的 Vite 项目结构如下:

my-vite-project/
├── node_modules/
├── public/
│   └── favicon.ico
├── src/
│   ├── assets/
│   ├── components/
│   ├── App.vue
│   └── main.js
├── index.html
├── package.json
├── vite.config.js
└── README.md

  • public 目录:存放一些公共的静态资源,比如网站图标等,这些资源会被直接复制到项目的根目录下,在 HTML 中可以直接通过相对路径引用。
  • src 目录:是项目的主要源代码目录,包含了各种组件、样式、业务逻辑代码等。
  • index.html:项目的入口 HTML 文件,Vite 会将其作为开发服务器的入口,并且在构建生产版本时,也会基于此文件进行处理。
  • vite.config.js:Vite 项目的配置文件,在这里可以配置插件、服务器相关选项、构建相关的设置等,用来定制化项目的构建和开发流程。
5. 配置文件(vite.config.js)

下面是一个简单的 vite.config.js 文件示例,用于配置一些基础的功能,比如添加插件、设置服务器端口等:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [vue()],server: {port: 3001, // 设置开发服务器的端口为 3001},
});

  • plugins 字段:用于配置项目需要使用的插件,这里引入了 @vitejs/plugin-vue 插件来支持 Vue 项目的编译等相关处理,不同的项目框架需要对应的插件支持。
  • server 字段:可以对开发服务器进行各种设置,除了端口,还可以配置代理等功能,方便与后端 API 进行联调。例如,设置代理可以这样写:
server: {port: 3001,proxy: {'/api': {target: 'http://localhost:8080', // 后端 API 地址changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ''),},},
},

这样,前端项目中以 /api 开头的请求都会被代理到 http://localhost:8080 这个后端服务器地址上。

6. 构建生产版本

当项目开发完成,需要部署到生产环境时,可以使用以下命令构建项目:

npm run build
# 或者
yarn build

Vite 会对项目进行打包、优化等一系列操作,生成可以直接部署到服务器上的静态文件,一般会生成 dist 目录,里面包含了 HTML、CSS、JavaScript 等经过处理后的文件,将这个目录下的内容部署到服务器相应位置即可让网站上线运行。

四、Vite 与不同框架的结合

1. Vue 项目

  • 如前面所述,创建 Vue 项目时使用对应的 vue 模板即可。在项目中编写 Vue 组件、使用 Vue 的各种特性(如 Composition APIOptions API 等)都和常规的 Vue 开发类似,Vite 会自动处理好相关的编译和优化工作。
  • 对于 Vue 的单文件组件(.vue 文件),Vite 借助插件可以很好地解析其中的 <template><script> 和 <style> 部分,将它们分别编译成对应的 JavaScript、CSS 等代码。
2. React 项目

  • 创建 React 项目时选择 react 模板,例如:
create-vite my-react-project --template react

  • 在 React 项目中,可以正常使用 React 的各种 API(如 useStateuseEffect 等)来构建组件、处理逻辑。Vite 会确保 React 项目中的 JSX 等语法能够被正确编译和处理,同时也能享受到 Vite 的快速开发和构建优势。
3. 其他框架

除了 Vue 和 React,Vite 也支持 Preact、Svelte 等其他前端框架,使用方式类似,都是通过选择对应的模板来创建项目,然后按照各自框架的开发规范进行代码编写,Vite 会在底层做好适配和构建相关的工作。

五、Vite 的生态与社区

Vite 在前端社区中拥有庞大的生态,有大量的开源插件可供选择,涵盖了从代码风格检查、性能优化到与各种第三方工具集成等方方面面。同时,很多开发者也在不断分享关于 Vite 的使用经验、最佳实践以及各种实际项目中的案例,通过参与社区(如 GitHub 上的 Vite 仓库、相关论坛等)可以及时了解到 Vite 的最新动态、学习他人的优秀做法,进一步提升自己运用 Vite 进行前端开发的能力。

总之,Vite 作为一个强大且高效的前端构建工具,为前端开发带来了诸多便利,值得深入学习和掌握,希望这份笔记能帮助你更好地开启 Vite 的自学之旅呀!


http://www.ppmy.cn/server/144854.html

相关文章

【AIGC】破解ChatGPT!如何使用高价值提示词Prompt提升响应质量

文章目录 为什么高价值提示词如此重要&#xff1f;&#x1f50d;1.1 提升响应的相关性和准确性1.2 节省时间与资源1.3 增强用户体验 了解ChatGPT的工作原理&#x1f9e0;2.1 语言模型的训练过程2.2 上下文理解与生成2.3 限制与挑战 高价值提示词的核心要素✍️3.1 清晰明确的指…

CSS 3D球形旋转

csshtml即可实现3D球形旋转效果你敢信&#xff1f;你可以信&#xff01;废话不多说&#xff0c;直接上代码&#xff01; <html> <head> </head> <body> <div id"box-preserve-3d"><div class"ball-center-x"></div…

3349、检测相邻递增子数组 Ⅰ

3349、[简单] 检测相邻递增子数组 Ⅰ 1、题目描述 给你一个由 n 个整数组成的数组 nums 和一个整数 k&#xff0c;请你确定是否存在 两个 相邻 且长度为 k 的 严格递增 子数组。具体来说&#xff0c;需要检查是否存在从下标 a 和 b (a < b) 开始的 两个 子数组&#xff0c…

FIber + webWorker

文章目录 Fiber主要功能解决的问题如何解决 webworker 多线程作用使用注意点使用1 主线程3 Worker 加载脚本4 错误处理5 关闭 Worker 数据通信 Fiber 主要功能 为每个增加了优先级&#xff0c;优先级高的任务可以中断低优先级的任务。然后再重新执行优先级低的任务增加了异步…

TCP为什么需要三次握手?两次握手或四次握手可以吗?

&#xff08;1&#xff09;三次握手可以保证双方具有接收和发送的能力 第一次握手服务端可以确认客户端的发送能力和服务端的接收能力是正常的&#xff1b;第二次握手客户端可以确认客户端和服务端的收发能力是正常的&#xff0c;但是服务端无法确认客户端的接收能力是正常的&…

使用php和Xunsearch提升音乐网站的歌曲搜索效果

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…

FastAPI和SQLModel结合的优点

FastAPI和SQLModel的结合为现代Web应用开发带来了一系列显著的优势&#xff0c;特别适合需要与SQL数据库交互的场景。以下是它们结合的一些主要优点&#xff1a; 简短的代码&#xff1a;SQLModel通过使用Python类型注解来定义数据模型&#xff0c;最小化代码重复&#xff0c;无…

原生微信小程序在顶部胶囊左侧水平设置自定义导航兼容各种手机模型

无论是在什么手机机型下&#xff0c;自定义的导航都和右侧的胶囊水平一条线上。如图下 以上图iphone12&#xff0c;13PRo 以上图是没有带黑色扇帘的机型 以下是调试器看的wxml的代码展示 注意&#xff1a;红色阔里的是自定义导航&#xff08;或者其他的logo啊&#xff0c;返回之…