Введение
В этом проекте вы научитесь создавать адаптивный макет списка продуктов с функцией переключения. Эта функция позволяет пользователям легко переключаться между сетевым и списковым видами элементов продукта.
👀 Превью

🎯 Задачи
В этом проекте вы научитесь:
- настраивать структуру проекта и понимать назначение каждого файла и папки;
- получать данные из JSON-файла и заполнять список продуктов;
- реализовывать функцию переключения макета с использованием Vue.js;
- условно отображать сетевой и списковые макеты в зависимости от выбранного вида.
🏆 Достижения
После завершения этого проекта вы сможете:
- эффективно структурировать проект на Vue.js;
- использовать Axios для получения данных из JSON-файла;
- использовать директивы Vue.js, такие как
v-ifиv-else, для условного отображения содержимого; - обрабатывать взаимодействия пользователя и соответствующим образом обновлять интерфейс.
Настроить структуру проекта
В этом шаге вы научитесь настраивать структуру проекта для проекта Layout Switch. Следуйте шагам ниже, чтобы выполнить этот шаг:
- Откройте папку проекта для этого проекта. Структура директорий следующая:
├── css
├── images
├── js
│ ├── axios.min.js
│ └── vue.js
├── goodsList.json
└── index.html
Изучите назначение каждой папки и файла:
css: Эта папка предназначена для файлов стилей.images: Эта папка предназначена для изображений.js/vue.js: Это файл Vue 2.x.js/axios.min.js: Это файл Axios.goodsList.json: Это данные, необходимые для запроса.index.html: Здесь содержится макет страницы и логика.
Нажмите кнопку Go Live в нижнем правом углу WebIDE, чтобы запустить проект.
Откройте "Web 8080" в верхней части ВМ и обновите ее вручную, чтобы увидеть страницу.
Реализовать получение данных
В этом шаге вы научитесь получать данные, необходимые для проекта. Следуйте шагам ниже, чтобы выполнить этот шаг:
- В файле
index.htmlнайдите тег<script>внизу файла. - Внутри тега
<script>создайте новую экземпляр Vue с использованиемnew Vue(). - В опции
dataэкземпляра Vue добавьте свойствоgoodsListи инициализируйте его как пустой массив. - В хуке
mountedэкземпляра Vue используйте Axios для получения данных из файлаgoodsList.json. - Обновите свойство данных
goodsListполученными данными.
Ваш код должен выглядеть примерно так:
var vm = new Vue({
el: "#app",
data: {
goodsList: []
},
mounted() {
axios.get("./goodsList.json").then((res) => (this.goodsList = res.data));
}
});
Реализовать переключение макета
В этом шаге вы научитесь реализовать функцию переключения макета списка продуктов. Следуйте шагам ниже, чтобы выполнить этот шаг:
- В файле
index.htmlнайдите элемент<div class="bar">. - Внутри этого элемента добавьте два элемента
<a>с именами классовgrid-iconиlist-iconсоответственно.
<div class="bar">
<a class="grid-icon"></a>
<a class="list-icon"></a>
</div>
- Создайте свойство данных
changeBarв экземпляре Vue, чтобы отслеживать текущий макет, установив значение по умолчанию равным 0, то есть по умолчанию используется сетевой макет.
var vm = new Vue({
el: "#app",
data: {
changeBar: 0
//...
}
});
- Привяжите событие
@clickк каждому элементу<a>. Когда на элементgrid-iconкликают, установитеchangeBarравным0и добавьте классactiveк элементуgrid-icon. Удалите классactiveиз элементаlist-icon.
<div class="bar">
<a
class="grid-icon"
:class="changeBar == 0? 'active' : ''"
@click="changeBar = 0"
></a>
<!--... -->
</div>
- Привяжите событие
@clickк каждому элементу<a>. Когда на элементlist-iconкликают, установитеchangeBarравным1и добавьте классactiveк элементуlist-icon. Удалите классactiveиз элементаgrid-icon.
<div class="bar">
<!--... -->
<a
class="list-icon"
:class="changeBar == 1? 'active' : ''"
@click="changeBar = 1"
></a>
</div>
- Используйте директивы
v-ifиv-else, чтобы условно отобразить сетевой и списковые макеты в зависимости от значенияchangeBar.
<ul class="grid" v-if="changeBar == 0">
<li v-for="item in goodsList">
<a :href="item.url" target="_blank">
<img :src="item.image.large" />
</a>
</li>
</ul>
<ul class="list" v-else>
<li v-for="item in goodsList">
<a :href="item.url" target="_blank">
<img :src="item.image.small" />
</a>
<p>{{item.title}}</p>
</li>
</ul>
Завершить проект
В этом финальном шаге вы проверите завершенный проект и убедитесь, что он соответствует требованиям.
- Проверьте, что данные корректно извлекаются из файла
goodsList.json. - Убедитесь, что функция переключения макета работает как ожидается:
- При нажатии на значок сетки макет меняется на сетевой вид, и к значку сетки добавляется класс
active. - При нажатии на значок списка макет меняется на списковый вид, и к значку списка добавляется класс
active.
- При нажатии на значок сетки макет меняется на сетевой вид, и к значку сетки добавляется класс
- Протестируйте проект, нажав на значки, и убедитесь, что макет меняется как ожидается.
Поздравляем! Вы завершили проект Layout Switch. Вы научились:
- настраивать структуру проекта;
- получать данные из JSON-файла;
- реализовывать функцию переключения макета с использованием Vue.js.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



