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

javascript 复制代码
// 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. 需要深度自定义构建流程的特殊需求

相关推荐
aloha_7895 小时前
接口自动化框架学习
功能测试·学习·自动化·模块测试
sheeta19985 小时前
LeetCode 每日一题笔记 日期:2025.12.17 题目:3573.买卖股票的最佳时机Ⅴ
笔记·算法·leetcode
走在路上的菜鸟5 小时前
Android学Dart学习笔记第十九节 类-混入Mixins
android·笔记·学习·flutter
算法与双吉汉堡6 小时前
【短链接项目笔记】Day1 用户模块
java·spring boot·笔记·后端
有为少年6 小时前
带噪学习 | Ambient Diffusion (NeurIPS 2023) 上篇
人工智能·深度学习·神经网络·学习·机器学习·计算机视觉·生成模型
啃火龙果的兔子6 小时前
Java 学习路线及学习周期
java·开发语言·学习
Thexhy6 小时前
CentOS7安装Redis全攻略
linux·经验分享·redis·学习
大白的编程日记.6 小时前
【计算网络学习笔记】TCP套接字介绍和使用
网络·笔记·学习
深蓝海拓6 小时前
PySide6从0开始学习的笔记(七) 控件(Widget)之文字输入类控件
笔记·python·qt·学习·pyqt
重生之我在番茄自学网安拯救世界6 小时前
网络安全中级阶段学习笔记(八):upload靶场实战(1-13关)-文件上传漏洞绕过1
笔记·学习·网络安全·文件上传漏洞·靶场实战