Front End | 5 вопросов на собеседовании в день (8)

опрос
Front End | 5 вопросов на собеседовании в день (8)

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

Прекрасные выходные закончились, и серия из 5 вопросов обновляется каждый день~

1. Связь между компонентами (родительско-дочерние компоненты, одноуровневые компоненты, кросс-уровневые компоненты)

【Почти необходимые вопросы】

Ниже мы опишем каждый способ связи отдельно:

(1)props / $emitДля связи между родительскими и дочерними компонентами

отец сынуprops, сын к отцу$on、$emit.

(2)refа также$parent / $childrenДля связи между родительскими и дочерними компонентами

  • ref: при использовании в обычном элементе DOM ссылка указывает на элемент DOM; при использовании в дочернем компоненте ссылка указывает на экземпляр компонента.
  • $parent / $children: доступ к родительскому/дочернему экземпляру

(3)EventBus ($emit / $on)Подходит для общения между родителями и детьми, между поколениями, братьями и сестрами

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

(4)$attrs/$listenersДля межпоколенческого компонента коммуникации

  • $attrs: содержит привязки свойств (кроме class и style ), которые не распознаются (и не приобретаются) реквизитами в родительской области. Когда компонент не объявляет реквизиты, все привязки родительской области (кроме класса и стиля) включаются сюда, и к ним можно получить доступ черезv-bind="$attrs"Передайте внутренний компонент. Обычно используется с опцией inheritAttrs.
  • $listeners: содержит прослушиватель событий v-on в родительской области (без декоратора .native). это может пройтиv-on="$listeners"Пропустить внутренние компоненты

(5)provide / injectДля межпоколенческого компонента коммуникации

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

(6) vuex: идеальное решение для связи между родителем и потомком, между поколениями и родственными компонентами.

2. Представьте Vuex

Vuex — это шаблон управления состоянием, разработанный для приложений Vue.js. Ядром каждого приложения Vuex является магазин. Магазин — это, по сути, контейнер, который содержит большую часть состояния вашего приложения.

(1) Хранилище состояния Vuex является реактивным. Когда компонент Vue считывает состояние из хранилища, если состояние в хранилище изменяется, соответствующий компонент будет эффективно обновлен соответствующим образом.

(2) Единственный способ изменить состояние в хранилище — это явно зафиксировать мутацию. Это позволяет нам легко отслеживать каждое изменение состояния.

В основном он включает в себя следующие модули:

  • Состояние: здесь можно установить структуру данных, определяющую состояние приложения, и начальное состояние по умолчанию.
  • Геттеры: позволяет компонентам получать данные из хранилища, вспомогательная функция mapGetters просто сопоставляет геттеры в хранилище с локальными вычисляемыми свойствами.
  • Мутация: единственный способ изменить состояние в хранилище и должна быть синхронной функцией.
  • Действие: используется для отправки мутаций вместо прямого изменения состояния и может содержать произвольные асинхронные операции.
  • Модуль: позволяет разделить одно хранилище на несколько хранилищ и хранить их в одном дереве состояний одновременно.

3. Что такое $nextTick?

Отзывчивость vue заключается не в изменении dom сразу после изменения данных, а в обновлении dom по определенной стратегии.

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

4. Что такое ССР?

SSR — это рендеринг на стороне сервера.也就是将Vue在客户端把标签渲染成HTML的工作放在服务端完成,然后再把html直接返回给客户端.

SSR имеет преимущества лучшего SEO и более быстрой загрузки в верхней части страницы. Однако у него также есть некоторые недостатки, такие как наши условия разработки будут ограничены, а рендеринг на стороне сервера поддерживает толькоbeforeCreateа такжеcreatedДва хука требуют специальной обработки, когда нам нужны некоторые внешние библиотеки расширений, а приложение рендеринга на стороне сервера также должно находиться в среде выполнения Node.js. Кроме того, сервер будет иметь большую потребность в нагрузке.

5. Какие оптимизации производительности Vue вы сделали?

Оптимизация — это большая тема, которая включает в себя множество аспектов:

этап кодирования

  • Минимизируйте данные в данных, данные в данных добавят геттеры и сеттеры, а соответствующие наблюдатели будут собраны
  • v-if и v-for нельзя использовать вместе
  • Если вам нужно использовать v-for для привязки событий к каждому элементу, используйте делегаты событий
  • Страницы SPA используют компоненты кэша поддержки активности.
  • В большинстве случаев используйте v-if вместо v-show
  • Ключ гарантированно будет уникальным
  • Ленивая загрузка, асинхронные компоненты с использованием маршрутизации
  • Защита от сотрясений, дросселирование
  • Импорт сторонних модулей по запросу
  • Прокрутите длинный список до области просмотра для динамической загрузки
  • Ленивая загрузка изображения

SEO-оптимизация

  • предварительный рендеринг
  • Рендеринг на стороне сервера SSR

Оптимизация упаковки

  • сжатый код
  • Tree Shaking/Scope Hoisting
  • Загружать сторонние модули с помощью cdn
  • Многопоточная упаковка happypack
  • splitChunks извлекает общедоступные файлы
  • оптимизация исходной карты

Пользовательский опыт

  • Скелетонный экран

  • PWA

В соответствии с первоначальным намерением помочь фронтенду в поиске работы, я узнал из статей многих больших парней в Наггетс, Если есть какие-либо нарушения, пожалуйста, дайте мне знать