#javascript #vue.js #vuetify.js
#javascript #vue.js #vuetify.js
Вопрос:
Я придумал способ сказать Vue, чтобы он просматривал файл и назначал изображения соответствующему количеству карточек. Все работает нормально.
Но мне было интересно, есть ли лучший способ сделать это. Причина, по которой я спрашиваю, заключается в том, что в настоящее время вам нужно переименовывать свои изображения в числовом порядке (например, 1.png, 2.png, 3.png и т. Д.), И, как вы знаете, для SEO очень плохо неправильно называть ваши файлы изображений, и это немного раздражает, если выхотите добавить больше изображений или удалить какие-либо
Это не полный разрыв сделки, но мне бы хотелось, чтобы я не терял свои возможности ранжирования в SEO.
Вот код
<v-container fluid>
<v-row>
<v-col
v-for="n in 38"
:key="n"
class="d-flex child-flex"
cols="4"
>
<v-lazy
:options="{
threshold: 0.5,
}"
transition="fade-transition"
>
<v-card elevation="8" shaped draggable="false" class="d-flex">
<v-img
:src="require('@/assets/skillsLogo/' n '.png')"
:lazy-src="require('@/assets/skillsLogo/' n '.png')"
class="grey lighten-4"
aspect-ratio="3"
>
<template v-slot:placeholder>
<v-row
class="fill-height ma-0"
align="center"
justify="center"
>
<v-progress-circular
indeterminate
color="grey lighten-5"
></v-progress-circular>
</v-row>
</template>
</v-img>
</v-card>
</v-lazy>
</v-col>
</v-row>
</v-container>
Заранее спасибо
Комментарии:
1. Вы можете использовать
require.context('@/assets/skillsLogo', false, /.png$/)
для получения объекта со всеми файлами в данной папке — тогда вы можете перечислить его.2. Спасибо @IVOGELOV за быстрый ответ. Если я использую это, это выдает ошибку в консоли.
Invalid prop: type check failed for prop "src". Expected String, Object, got Function
3.
require.context()
не является прямой заменойrequire()
— вы должны создать вычисляемое свойство в своем компоненте и вызвать его внутри, затем подготовить массив и вернуть его в качестве результата для вычисляемого свойства. Затем используйте это вычисляемое свойство в качестве источника вv-for
4. @IVOGELOV Спасибо, чувак, теперь я понимаю. спасибо за отличную помощь
Ответ №1:
images.js
const context = require.context("@/assets/skillsLogo/", false, /.png$/);
const images = context.keys().map(context);
export default images;
Компонент:
<script>
import images from "./images.js";
export default {
data() {
return {
images: images,
};
},
};
</script>
Выполните итерацию по images
массиву в вашем шаблоне…