如何在vue.js Webpack项目上正确设置favicon.ico?


91

我使用创建了一个vue webpack项目vue-cli

vue init webpack myproject

然后在dev模式下运行项目:

npm run dev

我收到此错误:

加载资源失败:服务器响应状态为404(未找到)http:// localhost:8080 / favicon.ico

那么在webpack中,如何favicon.ico正确导入?


1
您是否尝试过将其放入网站的根目录?:)还是在公共构建文件夹中?
本杰明

Answers:


150

查看webpack模板的项目结构:https ://vuejs-templates.github.io/webpack/structure.html

请注意,有一个静态的文件夹,连同node_modulessrc等等。

如果您将某些图片放入static文件夹中,例如favicon.png,它将在http:// localhost:8080 / static / favicon.png中提供

这是静态资产的文档:https : //vuejs-templates.github.io/webpack/static.html

对于您的收藏夹问题,您可以将favicon.icofavicon.png放入static文件夹中,<head>并按如下所示引用index.html的:

<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" type="image/png" href="/static/favicon.png"/>
    <title>My Vue.js app</title>
    ...
</head>

如果你没有定义favicon.ico在你的index.html,那么浏览器就会从网站的根目录(默认行为)一个图标请求。如果您如上所述指定图标,则不会再看到该404。该图标也将开始显示在浏览器选项卡中。

附带说明一下,这就是为什么我更喜欢PNG而不是ICO文件的原因:

favicon.png vs favicon.ico-为什么我应该使用PNG而不是ICO?


1
如果我想将我的收藏夹保存在src / assets中怎么办?最好将它与.gitkeep一起保留在静态文件夹中?
阿金焕(Akin Hwan)

4
@AkinHwan我还没有尝试过,但是如果您将任何图像保留在src / assets中,它将被视为模块依赖项,并将作为内嵌图像(base64格式)进入最终的构建文件。这将不必要地增加构建大小。不用担心,它不会以任何方式影响性能。我喜欢将图像保留为“真正的静态资产”,如docs所述。您的偏好可能会有所不同。您需要尝试两种方法,然后选择一种适合您的方法。
玛尼

6
这个答案似乎有点过时了。在当前的vue Webpack模板中,有一个公共目录,而不是静态目录。
JakeParis

4

Laravel 5.x的小更新,将您的favicon.icofavicon.png放入/public文件夹中,并使用以下方式引用它index.html

<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" type="image/png" href="/favicon.png"/>
    <title>My Vue.js app</title>
    ...
</head>

希望能帮助到你 !


3

由于某种原因,在将默认favicon.ico文件转换为favicon.png并将其重命名为favicon-xyz.png例如(我已将该文件放在/public文件夹中)并按index.html如下方式编辑文件之前,上述解决方案对我不起作用:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="icon" href="<%= BASE_URL %>favicon-xyz.png">
    .
    .
    .
</head>

可能对某人有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.