Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Лекция



Привет, Вы узнаете о том , что такое vue, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое vue, vue.js, хуки жизненного цикла vue.js , настоятельно рекомендую прочитать все из категории Фреймворки. Famworks ( программная платформа).

Еще один популярный движок шаблонизации, построенный на архитектуре MVVM (с использованием VueX — это Flux).

Он имеет несколько вариантов организации шаблонов:

  • Single File Components — концепция, в которой шаблон, логика и стили инкапсулируются внутри единого файла.
  • JSX — смесь верстки и кода, то же, что и в React.js.

Сам по себе vue.js похож на React в том, что это лишь движок для шаблонизации, имеющий свою экосистему:

  • Axios — HTTP-запросы;
  • Vue Router — роутинг;
  • VueX — контейнер состояний.
  • Nuxt.js: Фреймворк для фреймворка Vue.js это фреймворк для создания универсальных приложений на Vue.js с использованием Node.js. С помощью него можно рендерить UI на сервере и генерировать статические сайты.

Субъективно, Vue.js гораздо проще для старта, чем Angular или React. Он имеет отличную справку-руководство, в том числе русскоязычную https://ru.vuejs.org/v2/guide/.

Кратко о концепции потока данных в VueX:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Идея похожа на тот же CQRS:

  • Код из нашей верстки диспатчит Action.
  • Action делает асинхронный запрос на сервер.
  • После получения ответа вызывается Mutation, которая решает, как ей менять State.
  • Изменение State делает повторный рендер верстки.

Как уже было сказано, Vue — это доступный фреймворк. Если вы уже знаете HTML, CSS и JavaScript, это значит, что вы готовы к тому, чтобы начать работу с Vue. Собственно говоря, если вы и правда стремитесь приступить к написанию Vue-приложений, тогда предлагаю этим и заняться.

Вариант №1: скрипт Vue, подключенный к странице

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Вариант №2: Vue CLI

npm install -g @vue/cli

vue create hello-vue

Вариант №3: Vue UI

vue ui

http://localhost:8000/dashboard.

Вариант №4: CodeSandbox

В процессе работы с документацией стоит обратить особое внимание на следующие базовые концепции Vue:

  • Компоненты.
  • Связывание данных.
  • Обработка событий.
  • Директивы.
  • Методы.
  • Вычисляемые свойства.
  • Жизненный цикл компонентов.
  • Свойства, передаваемые компонентам.

Нюансы

Внутри элемента template должен быть один корневой элемент.

Подключаем Vue.js

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 

Инициализируем Vue.js

Инициализируем приложение Vue.js:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Интерполяция

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Свойства типа computed

Свойства типа computed (вычисляемые свойства) это такие свойства, которые должны вычисляться, например, сортировка постов в списке. То есть это те свойства, которые не хранятся в объекте данных, а высчитываются при рендеринге шаблона.

Такие свойства выглядят как обычные свойства, но работают как методы (что-то наподобие get):

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Директивы

v-bind

v-bind - используется для привязки данных. v-bind можно заменить на :.

Например, привяжем данные к атрибуту src:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

v-bind:class

Ставим класс по условию:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

v-for

v-for - перебирает элементы массива.

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Обработка событий

Для обработки событий во Vue также используется директива - v-on. v-on можно заменить на @название_события: v-on:click === @click.

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Компоненты

Регистрируем компонент

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Любой компонент во Vue является экземпляром класса Vue.

Рекомендуемый способ регистрации компонента:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Отображаем в шаблоне

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Для этих целей существуют так называемый props - они позволяют передать данные дочернему компоненту от родительского компонента.

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Обратите внимание на camelCase синтаксис для props:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Подход к созданию компонента - single file components

Рассмотрим подход single file components. Этот подход подразумевает, что компонент состоит из одного файла и содержит: css, html, js (ES6).

Как передать данные приложению?

Данные от одного компонента можно передавать посредством props'ов.

Но есть такое понятие как - Управление состоянием (данными) приложения. Об этом говорит сайт https://intellect.icu . Для Управление состоянием (данными) приложения используются специальные библиотеки, например, в react это Redux, а во Vue.js - Vuex.

Для упрощенной разработки можно использовать свой подход, например, можно созлать файл store.js:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

В файле store.js также пишется вся логика по взаимодействию с хранилищем (такой же подход у vuex):

Если мы используем один объект для хранения состояния приложения и передачи его в разные компоненты, то по сути разные компоненты будут иметь доступ к одному объекту при изменении такого объекта мы увидим его изменения во всех компонентах, в том числе в тех, где изменений быть не должно. Поэтому вместо этого возвращается результат вызова функции. Это решается следующим образом - мы создаем функцию data, которая всегда будет возвращать другой объект:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Формы

v-model

v-model - позволяет привязаться к значению поля (из свойства data компонента)

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

События

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

События кастомные и DOM события (Обзор)

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

События во Vue.js

Во Vue.js используется система события близкая к Custom Event.

Данные (события) от родителя ребенку передаются через props. От ребенка родителю данные поступают посредством событий.

Пример использования событий

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Глобальная среда для событий (агрегатор событий)

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

То есть компоненты друг о друге не знают и взаимодействуют посредством агрегатора событий.

Допустим у нас есть два дочерних компонента.

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Дочерний компонент эмитит событие:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

Другой компонент подписывается на событие посредством общего агрегатора событий:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

хуки жизненного цикла vue.js

Хуки жизненного цикла (lifecycle hooks) — важная часть любого серьезного компонента. Нам часто нужно знать, когда компонент был создан, добавлен в DOM, обновлен или уничтожен. Хуки жизненного цикла показывают нам, как работает «за кулисами» выбранная библиотека. Они часто вызывают у новичков трепет или беспокойство. К счастью, понять принцип работы хуков несложно, см. схему:

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

beforeCreate

Хук beforeCreate выполняется прямо во время инициализации компонента. Данные еще не стали реактивными, а события не настроены.

created

В хуке created вы сможете получить доступ к реактивным данным и активным событиям. Шаблоны и виртуальный DOM еще не встроены (mounted) и не отрисованы.

Встраивание (вставка в DOM)

Хуки встраивания (mounting) — одни из самых часто используемых. Они позволяют получать доступ к компоненту непосредственно перед первой отрисовкой или сразу после нее. Однако эти хуки не выполняются в ходе отрисовки на стороне сервера.

Применяйте их, если непосредственно перед первичной отрисовкой или сразу после нее вам нужно отредактировать DOM компонента или получить к нему доступ.

Не применяйте эти хуки, если вам в ходе инициализации нужно извлечь данные для компонента. В этом случае используйте created (или created + activated для keep-alive-компонентов), особенно если эти данные вам нужны в ходе отрисовки на стороне сервера

Хук beforeMount выполняется до первичной отрисовки, а также после компилирования шаблона или функций отрисовки. Вероятно, вам никогда не потребуется использовать этот хук. Помните, что он не вызывается в ходе отрисовки на стороне сервера.

mounted

В хуке mounted вы получите полный доступ к реактивному компоненту, шаблонам и отрисованному DOM (через this.$el). Mounted — самый популярный хук жизненного цикла. Обычно его используют для извлечения данных для компонента (вместо этого применяйте created) и изменения DOM, зачастую ради интегрирования не-Vue библиотек.

Обновление (диффы и перерисовка)

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

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

Не применяйте их, если вам нужно узнать об изменении реактивного свойства в компоненте, вместо этого используйте вычисленные свойства или «наблюдателей» (watchers).

beforeUpdate

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

updated

Хук updated вызывается после изменения данных в компоненте и перерисовки DOM. Если вам нужно получить доступ к DOM после изменения свойства, такой хук — самое безопасное место для этого.

Уничтожение

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

beforeDestroy

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

destroyed

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

Прочие хуки

Есть два других хука, activated и deactivated. Они уже предназначены для keep-alive-компонентов, которые выходят за рамки нашей статьи. Достаточно сказать, что эти хаки позволяют определять, включен ли компонент, обернутый в теги . Можете применять их для извлечения данных для компонента или обработки изменений состояния. Эти хаки будут вести себя как created и beforeDestroy, но без необходимости полностью пересобирать компонент.

 Подробнее можно почитать напрмиер тут

https://github.com/vuejs/awesome-vue

Вопросы на собеседование по Vue.js


1) На каком шаблоне проектирования основан Vue?


Vue.js основан на шаблоне проектирования Model-View-ViewModel(он же MVVM), основной мотивацией для этого шаблона является отделение модели от представления.


2) Как передать данные компоненту?


Существует два способа: с помощью атрибут(props) или через события.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


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

 Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


Для отправки события из двух дочерних компонентов используйте следующий синтаксис

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


3) Назовите хуки жизненного цикла компонента в Vue.js?


beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, destroyed,errorCaptured


4) Как обновить состояние компонента в Vue ?


Для добавления или обновления реактивного свойства в состояние используется метод Vue.set(объект, ключ, значение), вы можете вызвать его с помощью this.

this.$set(this.user, 'first_name', 'John')


5) Что такое вычисляемые свойства и когда их нужно использовать?


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

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 

6) Как подключить внешний css файл в Vue ?

Если вы используете webpack, используйте следующий синтаксис:

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


Если вы предпочитаете стиль старой школы просто тег

Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование

7) Как подключить jQuery плагин?


Как правило, не рекомендуется использовать плагин jQuery в приложениях Vue, однако, если нет таких подходящих компонентов и библиотек, вы можете использовать его. Прежде всего импортируйте jQuery и плагин.

 Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


Затем необходимо инициализировать плагин в смонтированном компоненте lifecycle hook.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


8) Как зарегестрировать компонент в Vue.js ?


Чтобы зарегистрировать компонент глобально, используйте следующий синтаксис.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование  

Первый аргумент - имя нового компонента

Для локальной регистрации компонента используйте компоненты при создании нового экземпляра Vue.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


9) Что такое Vuex ?

Vuex - это шаблон управления состоянием и библиотека для Vue.js приложения. Он предназначен для хранения основных данных для всех компонентов приложения и гарантирует предсказуемость реактивных изменений данных.


10) Как сделать условный рендеринг компонента?


Используйте директивы v-if и v-else, компонент будет удален из dom, если вы передадите ему ложное условие. Для сохранения элемента в директиве DOM v-show может быть использовано css свойство display

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


11) Ести ли в Vue.js поддержка data binding? Если да, как его использовать?


Да Vue.js поддержывает data binding, для связывания инпута и состояния следует использовать директиву v-model.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


12) Как реализовать маршрутизацию на стороне клиента в Vue?


Рекомендуемый способ сделать SPA - использовать Vue Router, который является официальной библиотекой для маршрутизации, но не включен в основной фреймворк.


13) Как програмно сделать редирект в Vue Router?


Чтобы перейти на другую страницу програмно используйте router.push(location, onComplete?, onAbort?)

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 

Также можно вернуться к какой-то точке стека истории с помощью метода go(n)


14) Как защитить какой-то маршрут от несанкционированного доступа?


Его можно сделать внутри компонента или в глобальных guards.

  Фреймворк Vue.js основы, Хуки жизненного цикла Vue.js, Вопросы на собеседование 


Исследование, описанное в статье про vue, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое vue, vue.js, хуки жизненного цикла vue.js и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)

Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.

создано: 2020-10-11
обновлено: 2024-11-14
31



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Фреймворки. Famworks ( программная платформа)

Термины: Фреймворки. Famworks ( программная платформа)