[Перевод PPT/Обязательно к прочтению] You Yuxi: Принципы проектирования Vue 3.0

Vue.js
[Перевод PPT/Обязательно к прочтению] You Yuxi: Принципы проектирования Vue 3.0

предисловие

11 ноября 2019 года на конференции Vue Toronto 2019 @youyuxi поделился «Принципами проектирования Vue 3.0».

Автор этого PPT @ 尤雨溪, автор перевода: дядя Хей 666.

(Примечание: из-за слабого английского языка Uncle Hei, если у вас есть более качественные переводы, вы можете оставить сообщение в области комментариев!)

Перевод: Принципы проектирования для VUE 3.0

Перевод: Быстрое обновление статуса

Перевод: 1 миллион активных пользователей еженедельно по всему миру!

Перевод: Еженедельные загрузки NPM: более 100% по сравнению с прошлым годом

Перевод: Louis Vuitton использует технологии Vue и Nuxt

原文:Вызовы Vue Design

原文:У VUE очень разнообразный набор пользователей

  • Новички, которые только начинают работать с HTML и CSS
  • Профессионалы переведены из фреймворка JQuery
  • Ветеран-кирпичи превратился из другого кадра
  • Бэкенд-инженеры ищут легкие решения для фронтенда
  • Архитекторы выбирают фундаменты для всей организации

例句:У VUE очень разные сценарии использования

  • Внедрение интерактивности в устаревшие приложения
  • Разовые проекты, требующие быстрого выполнения, но не требующие долгосрочного обслуживания команды
  • Средние проекты предсказуемой сложности
  • Ожидается, что крупные проекты будут длиться несколько лет, а команды будут работать

原文:Дизайн включает поиск компромиссов

  • API, оптимизированные для простоты, приводят к масштабным проблемам с ремонтопригодностью
  • Тяжелые инструменты увеличивают входные барьеры и ограничивают варианты использования
  • Больше функций приводит к большему раздуванию

原文:Фреймворки должны учитывать несколько измерений

Перевод: доступность против масштабируемости

Перевод: CDN Build VS Vue Scaffolding

Перевод: API опций и API синтеза

  • Зачем вводить другой способ

Перевод: параметры API

  • Интуитивно понятный и простой в использовании
  • Проблемы масштабируемости в крупномасштабных приложениях

Перевод: Синтез API

  • чистая добавка
  • Может использоваться с API опций
  • Обеспечивает более гибкую организацию кода и возможности повторного использования логики.
  • Обеспечивает отличную поддержку машинописного текста

Перевод: TypeScript против JavaScript

  • Действительно ли необходим TypeScript?

Перевод: Почему TypeScript:

  • Pro: отличная IDE с поддержкой автозаполнения и информации о типе.
  • Плюсы: уверенность в рефакторинге старого кода в крупных проектах.
  • Минусы: стоимость обучения.
  • Минусы: начальная разработка идет медленно

Перевод: In vue 3

  • Определения TS также хороши для пользователей JS.
  • Компонентный код с использованием TS и JS выглядит практически одинаково.

Перевод: Шаблоны против JSX:

  • Зачем предоставлять оба?

例句:Быть инклюзивным фреймворком означает обслуживать пользователей с разным опытом

例句:Кроме того, шаблоны позволяют нам повысить производительность

Перевод: несмотря на то, что Vue обеспечивает минимальные обновления на уровне дерева компонентов, он по-прежнему представляет собой полное различие в каждом экземпляре компонента.

原文:Узкое место традиционного виртуального DOM

  • Производительность традиционных VDOM зависит от общего размера шаблона, а не от количества динамического содержимого в шаблоне.

  • Полностью динамическая логика рендеринга затрудняет создание безопасных максимальных предположений оптимизации AOT о намерениях пользователя.

原文:Синтаксические ограничения способствуют лучшей оптимизации

例句:Начнем с самого простого примера

  • Структура узла не меняется вообще
  • только один динамический узел

Перевод: Структура узла изменена: v-if

Перевод: Структура узла изменена: v-if

  • v-if снаружи: v-if — единственный динамический узел
  • Внутри v-if:{{message}} — единственный динамический узел

Перевод: Изменение структуры узла: v-for

  • v-for снаружи: v-for — единственный динамический узел (как осколок)
  • Внутри каждой итерации v-for: {{item.message}} — единственный динамический узел

Перевод: Это большое дерево

  • Шаблоны разделены на «блоки» на основе структурных директив.
  • Внутри каждого блока структура узла полностью статична.
  • Просто нужен плоский массив на блок, чтобы отслеживать динамические узлы.

Перевод: в новой стратегии производительность обновления определяется объемом динамического содержимого, а не общим размером шаблона.

Перевод: обновленные тесты производительности

  • v-for имеет 1000 итераций
  • В каждой итерации 12 элементов DOM вложены на 3 уровня в глубину, 2 привязки динамических классов, 1 интерполяция динамического текста, 1 привязка динамического атрибута id
  • Обновите все динамические привязки, запустите в среднем 100 раз

Перевод: мощность против размера

Перевод: дилемма Vue2:

  • Каждая новая функция увеличивает размер пакета на пользователя

Перевод: В Vue 3

  • Большинство глобальных API и внутренних помощников предоставляются в виде экспорта модуля ES (изменяемое дерево).
  • Компилятор также генерирует древовидно-изменяемый код для шаблонов.
  • Не платите за функции, которыми никогда не пользуетесь

Перевод: согласованность фреймворка и низкоуровневая устойчивость

Перевод:

  • Библиотеки против фреймворков
  • Примитивный против абстрактного
  • Базар против собора

Перевод: Мелкие преимущества

  • Меньше концепций для начала
  • Больше гибкости и больше пользовательских возможностей -> активная экосистема
  • Меньшая область обслуживания -> команда может сосредоточиться на изучении новых идей

Перевод: Мелкие недостатки

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

Перевод: Широкий спектр преимуществ

  • Наиболее распространенные проблемы можно решить с помощью встроенных абстракций.
  • Централизованный процесс проектирования обеспечивает согласованную и целостную экосистему

Перевод: широко распространенные недостатки

  • Более высокие нарушения раннего обучения
  • Негибкие встроенные решения не подходят для варианта использования
  • Большая поверхность обслуживания делает внедрение фундаментальных новых идей еще более четким.

Перевод: Место для прогресса

  • Иерархический дизайн, позволяющий постепенно выбирать функции
  • Низкий порог неспособности к обучению
  • Документация решения распространенных проблем

Перевод: В Vue 3

  • Тот же последовательный опыт, что и vue 2

router, Vuex и test-utils получат соответствующие обновления, чтобы соответствовать этому видению.

  • еще более низкий уровень гибкости

Первоклассные настраиваемые средства визуализации и настраиваемые API-интерфейсы компилятора

О переводчике