Проект Vue не может найти изображение при использовании <a href>, но может найти его при использовании <img>

У меня есть этот проект Vue. Все, что я сделал, это запустил vue create foo и удалил весь предварительно созданный код, который появляется в папке src при запуске этой команды. Затем я добавил изображение в папку src и создал свой собственный App.vue, это все, что я в нем написал.

<template>
  <div>
    <img alt = "Vue logo" src = "./foo.png">
    <a href = "./foo.png" download>foo</a>
  </div>
</template>

<script>
export default {
}
</script>

Когда я затем пробую это с npm run serve, веб-сайт отображает изображение отлично, но ссылка для скачивания не работает. Пишет, что на сервере нет запрошенного файла или что-то в этом роде.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Загрузчик Vue автоматически преобразует атрибуты img src в шаблонах в запросы модуля webpack, но по умолчанию он не делает того же для ссылок.

Если вам нужно напрямую сослаться на файл, вы можете поместить его в каталог public/, чтобы обойти веб-пакет (используя путь относительно этого каталога, т.е. для файла в public/foo/bar.jpg вы бы использовали <a href = "/foo/bar.jpg">)

Кроме того, вы можете оставить файл там, где он есть, и скажите веб-пакету преобразовать <a href> URL-адреса в запросах модуля, так же, как это делает URL-адреса src изображений, изменив параметры transformAssetUrls:

/* Add to vue.config.js */
module.exports = {
    chainWebpack: config => {
        config.module
            .rule("vue")
            .use("vue-loader")
            .loader("vue-loader")
            .tap(options => {
                // modify the options...
                options = Object.assign(options, {
                    transformAssetUrls: {
                        a: "href"
                    }
                });
                return options;
            });

    }
}

Как я могу обратиться к нему, когда он находится в открытом доступе?

Erik 27.04.2019 14:30

Хороший вопрос, я должен был включить это в ответ, я добавил его сейчас.

Daniel Beck 27.04.2019 14:44

Другие вопросы по теме