[К содержанию](../readme.md#введение-в-web-разработку) # Vue.js: концепции ## #8 Бизнес логика или детали реализации? > 10 минут * [YouTube](https://www.youtube.com/watch?v=U2ZJCMiQuo8) * [RuTube](https://rutube.ru/video/dd892631a12710bea4ef59c5dc40eeef/) ## #9 Учимся учиться > 5 минут * [YouTube](https://www.youtube.com/watch?v=ekrzshM4AHI) * [RuTube](https://rutube.ru/video/100ab08808ebc706fe69ff9e8d9a132a/) ## #10 Криптономикон-1 - Vue.js: практика > 39 минут Ниже приведен вольный пересказ этого скринкаста с переписыванием под `Vue3 + script setup`. Т.е. сначала просмотрите видео, чтобы понять о чём идет речь, а потом по пересказу попробуйте реализовать пример. * [YouTube](https://www.youtube.com/watch?v=0MEpPU3rWCk) * [RuTube](https://rutube.ru/video/5a7fa691b1fae3c7fa0d0dbf47dbfbdd/) ### Материалы к заданию 1. [Исходный HTML/CSS для самостоятельного повторения](https://gitlab.com/vuejs-club/youtube-course/cryptonomicon-html) 1. Материалы к изучению: под роликом на ютубе куча ссылок, но в принципе там раздел "Основы" от [Синтаксиса шаблонов](https://v3.ru.vuejs.org/ru/guide/template-syntax.html) до "Работы с формами" 1. [API для получения ключа:](https://www.cryptocompare.com/) **Расшифровка скринкаста** (вольный пересказ своими словами) >**Внимание**, сегодня мы с вами напишем очень и очень плохой код почему так и зачем мы это сделаем мы это сделаем потому что когда вас учат писать сразу хороший код вас учат решать задачу одним способом рано или поздно вы сталкиваетесь задач и решения которые вы не знаете и оказываетесь ситуации когда не понимаете хорошие ваше решение или плохое мы с вами вначале напишем плохой но к сожалению распространенный код и шаг за шагом в рамках этой серии видео будем его улучшать у нас как и в реальной жизни будут появляться новые требования заказчика мы будем находить какие-то баги сами уже у себя и сами героический фиксить и так далее таким образом на выходе вы не только получите хороший код для решения этой задачи но и понимание как глядя на код понять что он действительно плохой >В рамках расшифровки скринкаста я сразу буду переписывать его на Vue3, используя `vite` + `script setup` ### Описание проекта Чем же мы с вами займемся? Мы с вами напишем небольшое приложение, которое позволяет добавлять в список отслеживания криптовалюты, используя **api** `cryptocompare.com`. Соответственно мы будем иметь возможность добавить криптовалютные пары "имя валюты - USD" в наблюдение и, когда мы выбираем конкретную валюту, у нас внизу появляется график отслеживания. Мы можем убрать выбрать другую пару и вот сейчас постепенно шаг обновления 1 5 секунд у нас будут появляться собственно данные о изменение вот соответственно график автоматически адаптируется под минимальные и максимальные значения поэтому в начале он может выглядеть странно но со временем он нормализуется. График нам не очень интересно всем мы можем что-то удалить мы можем добавить криптовалюту мы можем так далее ну и когда мы обновляем страницу у нас очевидно встречает пустой экран вот мы добавляем в начале черточка когда нету данных и потом когда данные приезжают кто у нас там еще есть bitcoin кэш допустим у нас будут вот обновляться что у нас есть на входе на входе дизайнер нам выдал вот такой вот завершены html с него мы и будем начинать и он и ставит станет нашей отправной точкой ### Создание нового проекта, удаление лишего В домашнем задании [первой лекции](./web_01.md) вы должны были научится создавать приложене **Vue**. Откроем его и удаляем "рыбу": * нам не нужны директории `src/assets` и `src/components` (весь код пока будем писать в `App.vue`) * в `App.vue` удаляем всё из скрипта и шаблона (стили вообще удаляем) ```vue empty ``` * в `main.js` комментируем строчку с импортом `./main.css` Можем запустить проект командой `npm run dev` и посмотреть на пустое окно, убедившись заодно, что нет ошибок ### Добавление вёрстки и стилей В [материалах](#материалы-к-заданию) есть ссылка на файлы с вёрсткой. 1. Скопируйте содержимое `
` из файла `index.htm` в ваш шаблон (внутрь тега `` вместо слова **empty**) Все сработало. Как видите все подключилось но выглядит как-то криво  Очевидно нам нужны стили. Как можно подключить `css`? В рамках скринкаста стили добавлены прямо в файл `App.vue`, но мы сделаем более правильно: скопируйте файл `app.css` в каталог `src/assets` и в файле `main.js` раскомментируйте и поправьте строчку с импортом файла стилей ```js import './assets/app.css' ``` Почему-то в проекте на `vite` показывает крутилку на весь экран, удалите из вёрстки первый `