如何在vue.js webpack项目中正确设置favicon.ico?

Alf*_*ang 84 html favicon ecmascript-6 webpack vue.js

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

vue init webpack myproject
Run Code Online (Sandbox Code Playgroud)

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

npm run dev
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

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

所以在webpack里面,如何favicon.ico正确导入?

Man*_*ani 131

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

请注意,是一个静态的文件夹,随着node_modules,src

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

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

对于您的favicon问题,您可以将一个favicon.ico或一个或favicon.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>
Run Code Online (Sandbox Code Playgroud)

如果您未favicon.ico在自己中定义a index.html,则浏览器将从网站根目录请求favicon(默认行为).如果您指定上面的favicon,则不会再看到404.favicon也将开始显示在您的浏览器标签中.

作为旁注,这就是我更喜欢PNG而不是ICO文件的原因:

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

  • @AkinHwan我还没有尝试过这个,但如果你在src/assets中保留任何图像,它将被视为模块依赖,并将作为内联图像(base64格式)进入最终构建文件.这将不必要地增加构建大小.没什么可担心的,它不会以任何方式影响性能.如[文档](https://vuejs-templates.github.io/webpack/static.html)中所述,我希望将图像保持为"真正的静态资产".您的偏好可能有所不同 您需要尝试这两种方法并选择适合您的方法. (4认同)
  • 这个答案似乎有点过时了。在当前的Vue Webpack模板中,有一个“ public”目录,而不是“ static”目录。 (4认同)

tju*_*kan 12

出于某种原因,在将默认favicon.ico文件转换为favicon.png并将其重命名为favicon-xyz.pngeg(我已将此文件放在/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>
Run Code Online (Sandbox Code Playgroud)

可能对某人有用。


eig*_*all 7

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>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 !


CDT*_*CDT 7

截至 2022 年,@Mani 答案有点过时,因为静态资产现在在.publicstatic

只需生成一个.icofavicon文件(本站提供免费的在线favicon生成),将其重命名为favicon.ico并将其放入public文件夹中,无需更改index.html,重新加载即可显示新的favicon。