为什么捐赠
API 资源管理器
使用 Vite 的 Quasar CLI - @quasar/app-vite
应用处理资产

您将在项目结构中注意到我们有两个用于资产的目录:/public//src/assets/。它们之间有什么区别?有些是静态资产,而另一些则由构建系统处理并嵌入。

所以让我们试着回答上面的问题。我们首先讨论使用常规资产,然后看看静态资产有什么区别。

常规资产 - /src/assets

*.vue 组件中,所有模板和 CSS 都由 vue-html-loadercss-loader 解析,以查找资产 URL。例如,在 <img src="./logo.png">background: url(./logo.png) 中,"./logo.png" 是一个相对资产路径,将由 Vite 作为模块依赖项解析。

由于这些资产可能在构建过程中被内联/复制/重命名,因此它们本质上是您的源代码的一部分。这就是为什么建议将 Vite 处理的资产放置在 /src/assets 中,与其他源文件放在一起。事实上,您甚至不需要将它们全部放在 /src/assets 中:您可以根据使用它们的模块/组件对其进行组织。例如,您可以将每个组件放在它自己的目录中,其静态资产就在它旁边。

资产解析规则

相对 URL,例如 ./assets/logo.png 将被解释为模块依赖项。它们将根据您的 Vite 输出配置替换为自动生成的 URL。

~ 为前缀的 URL 被视为模块请求,类似于 import 'some-module/image.png'。如果您想利用 Vite 的模块解析配置,则需要使用此前缀。Quasar 提供了 assets 别名,因此建议您像这样使用它:<img src="~assets/logo.png">。注意 ‘assets’ 前面的 ~

静态资产 - /public

根相对 URL(例如 /logo.png - 其中 ‘/’ 是您的 publicPath)或 logo.png 根本不会被处理。这应该放在 public/ 中。这些将不会被处理。public 文件夹的内容将按原样复制到可分发文件夹中。

资产与静态

“assets” 文件夹中的文件只有在您的 Vue 文件中存在文字引用时才会包含在您的构建中。来自 “public” 文件夹的每个文件和文件夹都将按原样复制到您的生产构建中,无论如何。

警告

当不构建 SPA/PWA/SSR 时,/public/icons/*/public/favicon.ico 不会嵌入到您的应用程序中,因为它们没有任何用处。例如,Electron 或 Cordova 应用程序不需要这些文件。

Vite 的更多信息

请阅读 Vite 的指南 这里.