Vite

Polar Sponsor
爱发电 赞助
.NET 9.0

为开发、生产构建和库打包配置并优化 Vite。

Vite Patterns

功能概述

Vite Patterns是一项面向实际任务的技能,主要用于只有 VITE 前缀 vars 被暴露在客户端代码中 – DB PASWORD 保留服务器侧, VITE API URL 捆绑;通过导入. meta.env.VITE * 而不是处理。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Vite 模式

环境变量

  • 仅以 VITE_ 为前缀的变量会暴露给客户端代码 —— DB_PASSWORD 保留在服务端,VITE_API_URL 会被打包进前端产物
  • 通过 import.meta.env.VITE_* 访问,而非 process.env —— process.env 仅在 Node.js 环境中有效,在浏览器中为 undefined
  • .env.local 会覆盖 .env,且默认被 Git 忽略 —— 适用于存放本地密钥等敏感信息
  • import.meta.env.MODE 的值为 developmentproduction —— 可用于条件逻辑判断,不应依赖 NODE_ENV

CommonJS 兼容性

  • 默认为纯 ESM 模式 —— CommonJS 包需通过 optimizeDeps.include 显式声明以启用预构建
  • Vite 中不支持 require() —— 应使用 import,或借助 module 模块的 createRequire 实现动态引入
  • 部分包发布的 ESM 版本存在缺陷 —— 可将其加入 ssr.noExternaloptimizeDeps.exclude,交由 Vite 进行转换处理
  • 从 CommonJS 包解构命名导出可能失败 —— 建议改用默认导入再解构:import pkg from 'pkg'; const { method } = pkg

依赖预构建

  • Vite 在首次运行时会对依赖进行预构建 —— 若修改了依赖包,可删除 node_modules/.vite 强制重建缓存
  • 大型依赖会拖慢开发服务器启动速度 —— 对于极少变动的依赖,可添加至 optimizeDeps.include 以启用持久化缓存
  • 本地链接的包(如通过 npm link 安装)不会被自动预构建 —— 需手动加入 optimizeDeps.include
  • optimizeDeps.force: true 会在每次启动时强制重建 —— 仅建议用于调试,会严重损害开发体验

路径别名

  • 需同时在 vite.config.tstsconfig.json 中配置 —— Vite 使用自身解析逻辑,TypeScript 则依赖 tsconfig.json
  • 应使用 path.resolve(__dirname, './src') 而非相对路径 —— 相对路径易受当前工作目录影响而失效
  • @/ 别名并非内置 —— 不同于某些框架,需手动配置
// vite.config.ts
resolve: {
  alias: { '@': path.resolve(__dirname, './src') }
}

开发服务器代理

  • 代理仅在开发环境下生效 —— 生产环境需配置真实的 CORS 策略或反向代理
  • changeOrigin: true 会重写 Host 请求头 —— 多数校验请求来源的 API 均需此配置
  • WebSocket 代理需显式设置 ws: true —— HTTP 代理默认不转发 WebSocket 流量
  • 尾部斜杠至关重要:/api 可代理 /api/users,而 /api/ 仅匹配 /api//users(注意双斜杠)
server: {
  proxy: {
    '/api': {
      target: 'http://localhost:3000',
      changeOrigin: true,
      rewrite: path => path.replace(/^\/api/, '')
    }
  }
}

静态资源

  • public/ 目录下的文件直接映射至站点根路径,不参与构建处理 —— 适用于 favicon、robots.txt 等需保持原始路径的资源
  • src/assets/ 目录下的文件会被处理、哈希化,并支持模块导入 —— 推荐用于代码中引用的图片、字体等资源
  • 应通过 import 导入资源以获取正确解析后的 URL:import logo from './logo.png' —— 硬编码路径在构建后将失效
  • 动态路径请使用 new URL('./img.png', import.meta.url) —— 模板字符串配合变量的方式不可用

构建优化

  • 通过 build.rollupOptions.output.manualChunks 实现代码分割 —— 否则所有代码将被打包进单个巨型 bundle
  • 使用 rollup-plugin-visualizer 分析构建产物 —— 快速定位意外引入的大体积依赖
  • build.target 默认面向现代浏览器 —— 如需兼容旧版浏览器,可设为 'es2015',但会导致包体积增大
  • build.cssCodeSplit: true(默认启用)—— 每个异步 chunk 将生成独立的 CSS 文件

库模式

  • 通过 build.lib 构建 npm 包 —— 其配置与应用模式不同
  • 将对等依赖(peer dependencies)设为 external —— 避免将 React/Vue 等框架打包进你的库
  • 类型定义需单独通过 tsc 生成 —— Vite 不生成 .d.ts 文件
  • 同时输出 ESM 和 CJS 格式:formats: ['es', 'cjs'] —— 部分使用者仍需通过 require() 加载

HMR 问题

  • 循环导入会导致 HMR 失效 —— 建议重构代码打破循环,或触发整页刷新作为兜底
  • HMR 时状态丢失,说明组件未正确接收更新 —— 请检查是否实现了 import.meta.hot.accept()
  • 若 CSS 文件被导入到不支持 HMR 的 JS 模块中,CSS 修改将触发整页刷新 —— 应确保 CSS 导入在支持 HMR 的组件内
  • server.hmr.overlay: false 会禁用错误覆盖层 —— 适用于自定义错误处理逻辑,但也会掩盖潜在问题

SSR 配置

  • ssr.external 用于标记仅限 Node.js 使用的包 —— 防止 SSR 构建时将 node_modules 打包进服务端产物
  • ssr.noExternal 强制将指定包打包进 SSR 产物 —— 适用于含浏览器特定导入逻辑的包
  • CSS 导入在 SSR 下默认失败 —— 可使用 ?inline 后缀,或通过 css.postcss 配置适配 SSR 场景

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

2026.02.13

192

17

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

0

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

0

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

2026.09.21

0

17

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

2026.09.21

0

12

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

0

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

0

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二期_大前端线上班
第二期_大前端线上班

共345课时 | 79.3万人学习