วิธีการตั้งค่า favicon.ico อย่างถูกต้องในโครงการ vue.js webpack?


94

ฉันได้สร้างvue webpackโครงการโดยใช้vue-cliไฟล์.

vue init webpack myproject

จากนั้นรันโปรเจ็กต์ภายใต้devโหมด:

npm run dev

ฉันได้รับข้อผิดพลาดนี้:

ไม่สามารถโหลดทรัพยากร: เซิร์ฟเวอร์ตอบสนองด้วยสถานะ 404 (ไม่พบ) http: // localhost: 8080 / favicon.ico

ดังนั้นใน webpack วิธีการนำเข้าfavicon.icoอย่างถูกต้อง?


1
คุณได้ลองวางลงในรูทของไซต์แล้วหรือยัง? :) หรือในโฟลเดอร์ build สาธารณะ?
Benjamin

คำตอบ:


154

ตรวจสอบโครงสร้างโครงการของเทมเพลต 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>

หากคุณไม่ได้กำหนด a favicon.icoในของคุณindex.htmlเบราว์เซอร์จะขอไอคอน Fav จากรูทของเว็บไซต์ (พฤติกรรมเริ่มต้น) หากคุณระบุไอคอน Fav ด้านบนคุณจะไม่เห็น 404 อีกต่อไป ไอคอน Fav จะเริ่มปรากฏในแท็บเบราว์เซอร์ของคุณด้วย

หมายเหตุด้านข้างนี่คือเหตุผลที่ฉันชอบ PNG แทนไฟล์ ICO:

favicon.png กับ favicon.ico - ทำไมฉันจึงควรใช้ PNG แทน ICO


1
จะเป็นอย่างไรหากฉันต้องการเก็บไอคอน Fav ไว้ใน src / assets จะดีที่สุดที่จะทิ้งไว้ในโฟลเดอร์แบบคงที่พร้อมกับ. gitkeep?
Akin Hwan

4
@AkinHwan ฉันยังไม่ได้ลอง แต่ถ้าคุณเก็บภาพใด ๆ ไว้ใน src / assets มันจะถือว่าเป็นการพึ่งพาโมดูลและจะเข้าสู่ไฟล์ build สุดท้ายเป็นรูปแบบอินไลน์ (รูปแบบ base64) สิ่งนี้จะเพิ่มขนาดบิลด์โดยไม่จำเป็น ไม่มีอะไรต้องกังวลจะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน แต่อย่างใด มันเป็นความชอบของฉันที่จะเก็บภาพเป็น "สินทรัพย์คงที่ของจริง" ที่อธิบายไว้ในเอกสาร ความชอบของคุณอาจแตกต่างกันไป คุณต้องลองทั้งสองวิธีและเลือกวิธีที่เหมาะกับคุณ
มานี

8
คำตอบนี้ดูล้าสมัยไปหน่อย ในเทมเพลต vue webpack ปัจจุบันมีไดเร็กทอรีสาธารณะไม่ใช่ไดเร็กทอรีแบบคงที่
JakeParis

@JakeParis นอกจากนี้การใช้ "ทางลัด" ในลิงก์ rel จะใช้สำหรับ internet explorer เท่านั้น
Caine Nielsen

4

อัปเดตเล็กน้อยสำหรับ Laravel 5.x วางของคุณfavicon.icoหรือfavicon.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>

หวังว่าจะช่วยได้!


4

ด้วยเหตุผลบางประการวิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันก่อนที่จะแปลง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>

อาจมีประโยชน์สำหรับใครบางคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.