«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Часть изучения Vue Создание приложения погоды

Часть изучения Vue Создание приложения погоды

Опубликовано 5 ноября 2024 г.
Просматривать:948

Learning Vue Part Building a weather app

Погружение в Vue.js было похоже на открытие нового любимого инструмента в наборе «Сделай сам» — интуитивно понятного, гибкого и удивительно мощного. Моим первым побочным проектом, в котором я запачкал руки с Vue, было приложение погоды, и оно научило меня многому о возможностях фреймворка, а также о веб-разработке в целом. Вот что я узнал на данный момент.

1. Начало работы с Vue: простота и мощь

Одна из первых вещей, которые меня поразили в Vue.js, — это то, насколько легко его запустить и запустить. В отличие от некоторых других фреймворков, требующих тщательной установки и настройки, Vue оказался на удивление простым. Все, что мне было нужно, это тег сценария для включения Vue, и я отправился в гонку.

В моем приложении погоды я использовал функцию createApp Vue, чтобы запустить приложение:

const { createApp, ref } = Vue;

createApp({
    setup() {
        const locationValue = ref('');
        const responseMessage = ref(null);
        const selectedHourlyForecast = ref([]);
        const selectedFutureForecast = ref([]);
        // More code here...
    }
}).mount("#app")

Этот подход понятен и хранит все в одном месте, что упрощает управление состоянием и логикой приложения.

2. Реактивная привязка данных: магия ref

Система реактивности Vue — одна из его выдающихся особенностей. Используя ref, я смог сделать свои данные реактивными, а это означает, что любые изменения в данных автоматически обновляют DOM. Например, когда пользователь отправляет местоположение, данные о погоде извлекаются и отображаются без каких-либо ручных манипуляций с DOM:

const locationValue = ref('');
const responseMessage = ref(null);

const submitLocation = async () => {
    try {
        const response = await fetch(`http://api.weatherapi.com/v1/forecast.json?key=${APIKEY}&q=${locationValue.value}&days=6&aqi=no&alerts=no`);
        const result = await response.json();
        responseMessage.value = result;
    } catch (error) {
        console.log("An error occurred while fetching weather data", error);
        alert("Location not found");
    }
};

Беспрепятственное обновление пользовательского интерфейса на основе изменений данных — это то, что делает Vue.js невероятно мощным инструментом для создания интерактивных приложений.

3. Условный рендеринг: показывать только то, что необходимо

Директивы Vue, такие как v-if и v-else, упрощают условное отображение элементов в зависимости от состояния ваших данных. В своем приложении погоды я использовал эти директивы для отображения данных о погоде только тогда, когда они доступны:

{{responseMessage.current.temp_c}}°C
{{responseMessage.location.name}}, {{responseMessage.location.country}}
N/A °C
No location present

Такой вид условного рендеринга гарантирует, что приложение останется чистым и информативным, показывая пользователям только то, что им нужно видеть, и тогда, когда им это нужно.

4. Обработка пользовательского ввода: возможности v-модели

Обработка пользовательского ввода в Vue.js упрощается с помощью директивы v-model. В своем приложении я использовал v-модель для привязки поля ввода непосредственно к моей переменной locationValue, делая ее реактивной и синхронизируя данные с вводом пользователя:

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

5. Разбивка данных о погоде: итерация с помощью v-for

Отображение нескольких фрагментов данных, таких как почасовые или будущие прогнозы погоды, стало проще благодаря директиве Vue v-for. Это позволило мне перебирать массивы данных и динамически отображать их:

{{forecast.temp_c}}°C
{{forecast.condition.text}}
{{forecast.time.slice(11,16)}}

Это позволило легко создать гибкий и отзывчивый пользовательский интерфейс, который мог отображать различное количество точек данных в зависимости от местоположения пользователя и времени суток.

6. Обработка ошибок: не забывайте перехватывать эти исключения

Работа с API всегда сопряжена с возможностью ошибок, будь то проблемы с сетью или неверное местоположение. Vue упростил изящную обработку этих ошибок, гарантируя, что приложение не выйдет из строя и не сгорит, если что-то пойдет не так:

catch (error) {
    console.log("An error occurred while fetching weather data", error);
    alert("Unable to retrieve weather details");
}

Это помогло мне понять важность обработки ошибок при создании надежных приложений, способных справляться с непредвиденными ситуациями.

Подведение итогов

Создание погодного приложения с помощью Vue.js оказалось поучительным опытом. Я много узнал о том, как структурировать приложение и создавать адаптивный пользовательский интерфейс, который обновляется в режиме реального времени в зависимости от пользовательского ввода. Простота и гибкость Vue сделали этот процесс приятным, и я с нетерпением жду продолжения изучения того, что еще я могу создать с помощью этого мощного фреймворка.

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

Ждите следующего проекта, который я скоро создам, изучая #Vue. Приятного кодирования!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/willowjr/learning-vue-part-1-building-a-weather-app-4110?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3