← [ BACK_TO_NOTES ]

Vite 静态资源处理

区分 import 静态资源与 public 目录资源在哈希、路径解析与使用场景上的差异。

#concept #growing #frontend #javascript

[!info] related notes

Vite 静态资源处理

这个概念为什么出现

同一 logo 放错通道会导致:生产 404、无法内容哈希缓存、或 SSR/CDN 路径错误。

[!abstract] 一句话理解 import 资源进入模块图并可哈希;public/ 默认原样拷贝,引用时需考虑部署 base。

对照

方式适合行为
import url from './logo.svg'组件内资源返回 URL;小资源可内联为 data URL,否则通常输出带哈希文件
public/favicon.ico → /favicon.ico(根部署)固定文件名原样复制,不自动加哈希
?raw/?url 等特殊导入按文档查询后缀

base: '/inventory/' 部署时,业务 JS 中拼接 public 路径可用 import.meta.env.BASE_URL + 'favicon.ico',不要写 /public/favicon.ico。Vite 会调整处理过的 HTML、CSS 和资源 import,但不会替所有运行时字符串推导 base。

普通 SVG import 得到 URL,转换成组件需框架兼容插件。new URL('./logo.svg', import.meta.url) 适用于可静态分析的客户端相对资源;任意变量路径与 SSR 的服务器 URL 语义不能直接照搬。

场景

  • 按钮图标:import 或 SVG 组件
  • robots.txt/favicon:public
  • 需要内联字符串:按官方查询语法

本节总结

先问“要不要哈希与模块跟踪”,再选资源通道。

自测题

  1. 为什么 public 资源名通常不含 content hash?
参考答案

它们按原名复制,适合稳定 URL;缓存刷新需自行改名或网关策略。

创建于 2026/7/15 更新于 2026/10/17
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本