Следуя за потоком
Как раз заканчиваю свой первый проект с использованием Javascript на Flatiron’s Software Engineering Bootcamp. Я начала курс в начале апреля и последние две недели работала над своим проектом. Я многому научился за последние несколько месяцев, и видеть, как все это объединяется в этом проекте, было очень приятно.
Мой проект представляет собой простой в использовании источник данных о криптовалюте с использованием API CoinGecko. Будучи криптоинвестором, я хотел создать способ просмотра текущих значений и дополнительной информации о валютах, за которыми я слежу. Мое приложение позволяет создать учетную запись с именем пользователя и паролем. Как только вы войдете в систему, вы увидите мозаичное представление 100 лучших криптовалют на рынке. Пользователь может щелкнуть любую плитку по своему выбору, чтобы увидеть дополнительную информацию об этой криптовалюте.
Заставить мое приложение работать так, как я хотел, было довольно сложно. Переход со страницы входа к основному списку криптовалют, затем к дополнительной информации и обратно был непростым делом.
Отслеживание данных
Знание того, какие данные вы получаете, и отслеживание их с помощью ваших функций имеет решающее значение. Я усвоил этот урок на ранних этапах лабораторных работ и упражнений в программе. Использование API и передача его данных через ваши функции могут быть ошеломляющими. Мой инструктор проделал большую работу, подчеркнув использование console.log. Буквально на каждом этапе написания своих функций я регистрировал все в консоли. Мне нужно было знать, какие данные я получаю, чтобы правильно их использовать. Это было особенно важно в середине моего проекта, когда я понял, что мне нужно снова получить данные, чтобы использовать их по-другому. Моя исходная выборка использовала метод forEach для создания мозаичного списка. Когда я хотел отобразить дополнительную информацию об отдельной криптографии, я не мог использовать первую функцию, поэтому я снова извлекал данные, чтобы вернуть объект каждой криптографии по отдельности.
function renderCrypto() { mainPage.innerHTML = '' divTag.innerHTML = '' fetch(BASE_URL) .then(res => res.json()) .then((crypto) => { logOut() crypto.forEach((coin) => { createTile(coin) }) }) } function cryptoSelect(select) { fetch(BASE_URL) .then(res => res.json()) .then((crypto) => { moreInfo(select) }) }
Следование потоку функций
Несколько раз я возвращался к своему коду, чтобы понять, почему мои функции не выполнялись или почему они повторялись. Когда я передал свои функции другим функциям, я понял, что мне нужно следовать потоку выполнения или стеку вызовов. Почти каждая функция в моем приложении либо связана с передаваемыми данными, либо использует обратный вызов другой функции. Как только я начал перечислять порядок стека вызовов в своих заметках, я смог намного быстрее продвигаться по сборке своего приложения. Я больше не просматривал свой код, чтобы увидеть, какие функции будут выполняться первыми. Это было чрезвычайно полезно при создании функций возврата и выхода из системы. Когда вы перемещаетесь по моему приложению, некоторые функции очищают HTML, чтобы создать впечатление, будто вас перенаправляют на новую страницу. Я использовал ту же концепцию в обратном порядке, чтобы вернуться к предыдущим страницам. Наличие блок-схемы моих функций сделало эту задачу довольно простой. Я добавил несколько примечаний к каждой функции, которая должна была очистить часть HTML, затем вызвал функции для предыдущих страниц и «Бум!», вернулся и вышел из системы.
btnTag.addEventListener('click', (e) => { selectedCrypto.innerHTML = '' renderCrypto() }) function logOut (){ const btnTag = document.createElement('button') btnTag.innerText = 'Log Out' btnTag.addEventListener('click', (e) => { loginPage() }) divTag.appendChild(btnTag) }
Следование потоку всего в вашем приложении является важной частью разработки. Вам нужно знать, с чем вы работаете, зависимости от одной функции к другой и порядок выполнения.