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

vite学习笔记

Vite(法语意为"快速")是新一代前端构建工具,由 Vue.js 创始人尤雨溪开发,具有以下核心特性:

极速启动:冷启动时间比传统工具快 10-100 倍

闪电热更新:HMR 更新速度不受项目规模影响

智能构建:生产环境使用 Rollup 打包

原生 ESM:基于浏览器原生 ES 模块系统

与传统打包工具对比

特性

Webpack

Vite

启动机制

全量打包

按需编译

模块系统

模拟 CommonJS

原生 ESM

HMR 效率

线性增长

恒定时间

构建工具

自研打包

Rollup

开发服务器

内存文件系统

真实文件系统

 技术栈支持

技术

支持方式

示例配置

Vue

官方插件

@vitejs/plugin-vue

React

官方插件

@vitejs/plugin-react

TypeScript

原生支持

零配置

CSS 预处理器

内置支持

.scss/.less 直接导入

静态资源

智能处理

自动路径处理

快速开始:

# 创建项目
npm create vite@latest my-project -- --template vue-ts

# 目录结构
my-project/
├── node_modules
├── src/
│   ├── main.ts
│   ├── App.vue
│   └── ...
├── index.html
├── vite.config.ts
└── package.json

 

// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],resolve: {alias: {'@': '/src'}},server: {proxy: {'/api': {target: 'http://localhost:3000',changeOrigin: true}}},build: {rollupOptions: {output: {manualChunks: {lodash: ['lodash-es']}}}}
})

性能优化:

构建优化策略

优化方向

实现方案

配置示例

依赖预构建

optimizeDeps 配置

optimizeDeps: { include: ['lodash-es'] }

代码分割

动态 import + rollup 配置

manualChunks 配置

图片压缩

vite-plugin-imagemin

自动 PNG/JPG 优化

Gzip 压缩

vite-plugin-compression

预生成压缩文件

加载优化方案

// 典型配置组合
export default defineConfig({
  build: {
    cssCodeSplit: true,
    assetsInlineLimit: 4096,  // 4KB以下资源内联
    sourcemap: 'hidden',
    minify: 'terser'
  }
})

推荐使用场景

  1. 现代浏览器项目(Chrome >=61, Firefox >=60, Safari >=11)

  2. 框架新项目(Vue3/React18/Svelte)

  3. 库开发(利用 Rollup 的纯净打包)

  4. 微前端子应用(快速加载需求)

暂不推荐场景

  1. 需要支持 IE11 的项目

  2. 已有复杂 Webpack 配置的大型项目

  3. 需要深度自定义构建流程的特殊需求

http://www.xdnf.cn/news/604423.html

相关文章:

  • Jenkins 2.426.2配置“构建历史的显示名称,加上包名等信息“
  • 计算机网络——每一层的用到的设备及其作用
  • Spring MVC-面试题(33)
  • Python asyncio库:基本概念与使用方法
  • voc怎么转yolo,如何分割数据集为验证集,怎样检测CUDA可用性 并使用yolov8训练安全帽数据集且构建基于yolov8深度学习的安全帽检测系统
  • React+MapBox GL JS引入URL服务地址实现自定义图标标记地点、区域绘制功能
  • vue 鼠标经过时显示/隐藏其他元素
  • FPGA高效验证工具Solidify 8.0:全面重构图形用户界面
  • 游戏引擎学习第306天:图结构排序的调试
  • QT-VStudio2107加载项目,报出“元素 <LanguageStandard>只有无效值“Default“”
  • ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统
  • 2025年5月网工基础知识
  • rosbridge_suit、roslibpy 源码阅读与简单测试 —— 图片编解码与传输
  • 从 Docker 到 runC
  • 小说漫画管理系统
  • FRP技术概览
  • 黑马点评--短信登录实现
  • 针对面试-java集合篇
  • Alpha shapes算法边缘点进行排序(C++)
  • 「二叉搜索树·手撕暴走篇」:用C++《一路向北》狂写指针のの死亡轮盘!
  • 初识main函数
  • C/C++的OpenCV 进行图像梯度提取
  • [原创](计算机数学)(The Probability Lifesaver)(P14): 推导计算 In(1-u) 约等于 -u
  • 游戏引擎学习第308天:调试循环检测
  • 服务器修改/home的挂载路径
  • 课外活动:大语言模型Claude的技术解析 与 自动化测试框架领域应用实践
  • 【心海资源】【原创开发】TG,飞机,电报,协议号及直登号转API
  • C++滑动门问题(附两种方法)
  • SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
  • 运维打铁:生产服务器用户权限管理方案全解析