Vue-cli 正确处理<link rel="preload/prefetch">

Posted

技术标签:

【中文标题】Vue-cli 正确处理<link rel="preload/prefetch">【英文标题】:Vue-cli correct processing of <link rel="preload/prefetch"> 【发布时间】:2019-11-09 14:46:18 【问题描述】:

如何让 webpack 正确处理 &lt;link rel="preload/prefetch"&gt; 标签中的资产?

例如在/public/index.html里面使用时

<link rel="preload" href="@/assets/fonts/myfont.woff2" as="font" crossorigin>

webpack 应该对文件进行指纹识别并复制到/fonts,就像它在以下情况下所做的那样

url('~@/assets/fonts/myfont.woff2'); /* inside css */

导致

<link rel="preload" href="/fonts/myfont.$HASH$.woff2" as="font" crossorigin>

【问题讨论】:

【参考方案1】:

解决办法:

<link rel="preload" href="<%= require('@/assets/fonts/myfont.woff2') %>" as="font" crossorigin>

请注意,如果您想这样做

<link rel="icon" href="<%= require('@/assets/favicon.png') %>" type="image/png">

webpack 可能会根据 vue-cli 为你生成的默认 webpack 配置 url-inline 那个 favicon(如果它足够小的话)。

【讨论】:

以上是关于Vue-cli 正确处理<link rel="preload/prefetch">的主要内容,如果未能解决你的问题,请参考以下文章

link标签的rel属性

<LINK rel=SUBRESOURCE href="file"> 不缓存,尽管有正确的缓存头。似乎下载了两次,响应为 200OK

如何在 Express 4 中正确设置链接预取标头?

<link rel=preload> 必须有一个有效的 `as` 值

<link rel="preload" 的 `type` 值不受支持(字体预加载)

如何将 <link rel=preload> 应用于@font-face?