【问题标题】:How to set favicon.ico properly on vue.js webpack project?如何在 vue.js webpack 项目上正确设置 favicon.ico?
【发布时间】:2017-03-04 14:01:20
【问题描述】:

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

vue init webpack myproject

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

npm run dev

我收到了这个错误:

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

那么在webpack里面,如何正确导入favicon.ico呢?

【问题讨论】:

  • 你试过把它放到网站的根目录吗? :) 还是在公共构建文件夹中?

标签: html vue.js webpack favicon


【解决方案1】:

Laravel 5/6/7/8 的小更新,将您的 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>

希望对你有帮助!

【讨论】:

    【解决方案2】:

    由于某种原因,在将默认的 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>
    

    可能对某人有用。

    【讨论】:

    • 它很适合我。只需在删除原始图标后将我的自定义“favicon”图标放入“/public”文件夹即可。
    【解决方案3】:

    查看 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 文件夹中,并在您的index.html 的&lt;head&gt; 中引用如下:

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

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

    顺便说一句,这就是我更喜欢 PNG 而不是 ICO 文件的原因:

    favicon.png vs favicon.ico - why should I use PNG instead of ICO?

    【讨论】:

    • 如果我想将我的网站图标保留在 src/assets 中怎么办?最好将它与 .gitkeep 一起放在静态文件夹中吗?
    • @AkinHwan 我还没有尝试过,但是如果您在 src/assets 中保留任何图像,它将被视为模块依赖项,并将作为内联图像进入最终构建文件( base64 格式)。这将不必要地增加构建大小。不用担心,它不会以任何方式影响性能。正如the docs 中所述,我更喜欢将图像保留为“真正的静态资产”。您的偏好可能会有所不同。您需要尝试这两种方法并选择适合您的方法。
    • 这个答案似乎有点过时了。在当前的 vue webpack 模板中,有一个 public 目录,而不是 static 目录。
    • @JakeParis 同样,在链接 rel 中使用“快捷方式”仅用于 Internet Explorer。
    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2016-07-22
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多