предисловие
- Сначала изучите vue2.x, многие материалы 2.x все еще сохраняются;
- Сначала изучите TypeScript, vue3.0 переписан с помощью TS, и если вы хотите знать почему, вы должны изучить TS.
Зачем изучать vue3.0?
- Производительность в 1,2-2 раза выше, чем у vue2.x.
- Компилировать по запросу, меньше, чем vue2.x
- API композиции (аналогично React Hook)
- Улучшенная поддержка ТС
- Открытый пользовательский API рендеринга
- более продвинутые компоненты
Как vue3.0 становится быстрее?
- Оптимизация метода сравнения
Виртуальный дом в vue2.x — это полное сравнение. И vue3.0 добавил статические теги. При сравнении с последним виртуальным узлом сравнивается только узел с флагом исправления, и конкретное содержимое текущего сравниваемого узла может быть известно через информацию о флаге.
Возьмем пример, ниже приведен фрагмент кода.
<div>
<p>标签</p>
<p>{{msg}}</p>
</div>
Алгоритм сравнения vue2.x представляет собой сравнение полного количества деревьев виртуальных домов.Когда алгоритм сравнения vue3.0 создает виртуальный дом, он добавит статические теги в зависимости от того, изменилось ли содержимое в доме. Сравниваются только узлы с флагами исправления.
Мы можем не очень хорошо понимать приведенную выше картинку, поэтому давайте посмотрим на нее интуитивно по-другому. Как вы можете видеть на изображении ниже, в элементе, где существует привязка данных, есть статическая разметка.1
, тестовый URL:https://vue-next-template-explorer.netlify.app/
.
- hoistStatic (статический подъемник)
В vue2.x вне зависимости от того, участвует ли элемент в обновлении, он каждый раз будет пересоздаваться и затем рендериться. В vue3.0 элементы, не участвующие в обновлении, будут продвигаться статически, создаваться только один раз и могут повторно использоваться непосредственно во время рендеринга.
Снова заходим на тестовый сайт и ставим галочку напротив статически отмеченной опции, в этот раз мы найдем разницу, метка с фиксированными данными с правой стороны здесь.<p>标签</p>
, был размещенrender
вне функции. Таким образом, это будет создано только один раз глобально, поэтому производительность будет значительно улучшена.
- cacheHandlers (кэш прослушивателя событий)
По умолчанию, какonClick
Событие будет рассматриваться как динамическая привязка, поэтому его изменения будут отслеживаться каждый раз, но, поскольку это одна и та же функция, нет необходимости отслеживать изменения, просто кэшируйте их для повторного использования.
Хорошо, давайте сравним до и после включения кеша прослушивателя событий.
Кэширование прослушивателя событий не включено
Мы увидим, что есть статический маркер, поэтому он отслеживается каждый раз.
Включить кэширование прослушивателя событий
Поставьте галочку напротив кеша прослушивателя событий и включите его. Мы видим, что без статических маркеров нет отслеживания контраста, и производительность повышается.
Эпилог
Добро пожаловать, чтобы обратить внимание на мой публичный номер "Дорога к переднему бедствию"
ключевые слова ответаэлектронная книга, вы можете получить около 12 популярных электронных книг.
ключевые слова ответаКрасная книга 4-е изданиечтобы получить последнюю электронную книгу «Расширенное программирование на JavaScript» (4-е издание).
Вы также можете добавить меня в WeChat. Я привлек многих крупных ИТ-специалистов и создал группу по обмену техническими данными и статьями. Приглашаем присоединиться.
автор:Дорога золотых бобов Вама
Основные направления:Фронтенд разработка
Мой WeChat:maomin9761
Публичный аккаунт WeChat:Дорога к переднему бедствию