使用vite搭建了一个vue3项目 项目中有一些图片资源 放到pulic下 还是 assets下
2025/11/26大约 1 分钟
实际区别(Vite 官方逻辑):
🔥 1. 构建处理方式不同
assets/
- 会被 Vite 打包、压缩、指纹化(加 hash)
- 会参与 依赖分析、tree-shaking
- 被 import 时可以自动转成正确资源 URL
public/
- 完全不处理,原样复制到 dist
- 不加 hash,也不压缩
- 只能通过绝对路径访问:
/xxx.png
🔥 2. 使用方式不同
assets/
<img :src="logo" />
import logo from '@/assets/logo.png'或
<img src="@/assets/logo.png" />public/
<img src="/logo.png" />不能 import。
🔥 3. 适用场景不同
assets/(推荐用于项目内资源)
- 组件图片
- css 背景图
- 会参与打包优化的资源
public/(少用,只为特殊目的)
- favicon
- 第三方 SDK、静态库
- 用户可直接访问的文件(PDF、配置文件)
- 文件名不能被改动的大文件
- 存放非常大的、不想进入打包流程的资源
🔥 4. 性能与缓存行为
assets/
- 生成 hash 名称 → 可长期缓存
- 代码更新后 hash 会变 → 客户端自动更新资源
public/
- 文件名不会变 → 可能导致浏览器缓存不更新
✔ 一句话总结
放在
assets的文件会被优化处理,适合项目正常引用;
放在public的文件完全不参与构建,只用于直接 URL 访问。