Vue CLI добавляет встроенное фоновое изображение css, путь указан неверно

#typescript #vue.js #vuejs3

#typescript #vue.js #vuejs3

Вопрос:

Как и многие другие, я, похоже, не могу найти правильный путь..

использование @/assets/drive.jpg

Я пробовал: ~@/assets/drive.jpg , ~/assets/drive.jpg , @/assets/drive.jpg

Когда я жестко кодирую его в своем css, он работает, но как только я пытаюсь встроить его (для динамических целей), это мне не позволит.

 <div>
      class="hero-image"
      :style="{
          backgroundImage: `url('${imageUrl}')`,
          backgroundPosition: `${imagePosition}`
      }"
</div>
  

Ответ №1:

Есть причина, по которой это не работает.

@ это псевдоним, который интерпретирует webpack. Он будет делать это для импортированных файлов и <style> блоков, но когда у вас есть это в виде строки в шаблоне, он не будет обрабатывать это. Он также может не перемещать изображения из ресурсов в папку dist.

К сожалению, вам, скорее всего, потребуется найти другой способ сделать это. Если вы можете расширить желаемый результат, вы можете найти предложение, которое подходит лучше всего.

Например, вы могли бы иметь их изображения уже в вашем dist / assets, а затем использовать относительный путь в стиле, подобном: /assets/drive.jpg .

Если вам известен список изображений, которые вы будете использовать, вы можете добавить их с помощью require('./assets/drive.jpg') in the component или даже inline . Но поскольку эта работа выполняется во время компиляции, вы не сможете использовать require(imageUrl) .

Комментарии:

1. Спасибо за объяснение, Дэниел! Это работает, когда я помещаю его в свою общую папку. Я только что прочитал, что это была плохая практика. Я попробую поискать другие способы, я просто боялся, что это глупая синтаксическая ошибка.

2. Вы можете использовать require для ввода ресурсов из src в dist