[Перевод] Юси Ю: Vue3 не будет поддерживать IE11, энергия будет вложена в Vue2.7

Vue.js

предисловие

Юйси ранее говорил, что у Vue3 будет совместимая версия IE11.Сейчас Vue3.0 уже давно выпущен, но совместимая версия задерживается.Получается, что Microsoft активно продвигает свою версию.新 Edge 浏览器, и намерен отказаться от IE, что заставляет Ю Юйси задуматься, нужна ли совместимость с IE, давайте взглянем на его Zhihu:

WX20210403-100231@2x.png

перевод

отVue3Когда мы начали разработку до конца 2018 года, нас спросили оIE11служба поддержки. Многие пользователи спрашиваютVue3Будет ли это поддерживатьIE11, наш первоначальный план состоял в том, чтобы сначала выпуститьVue3стабильная версия и будет поддерживаться позжеIE11. В ходе длительного процесса разработки мы такжеIE11СовместимостьIE11Просто отложите это на некоторое время.

Когда мы еще раз взглянем на текущие проблемы в 2021 году, браузеры иJavaScriptСитуация сильно изменилась. Сейчас все больше и больше разработчиков используют современные языковые возможности, и, что более важно, сама Microsoft начала переходитьEdgeпродвижение, активное отталкивание пользователейIE. даже в своих основных проектах (таких какMicrosoft 365) сдатьсяIE11служба поддержки. Всего несколько дней назад,WordPressтоже решил отказатьсяIE11служба поддержки.IE11глобального использования упало до1%последующий. Когда мы говорим об общедоступных веб-сайтах и ​​приложениях, IE11 явно демонстрирует быстрый спад.

Мы считаем, что это переосмыслениеVue3правильноIE11возможности для поддержки.

Стоимость поддержки IE11 в Vue 3

непоследовательное поведение

Vue2Реагирующая система основана наES5изgetter / setter.Vue3использоватьES6изProxyПолучите более производительную и более полную отзывчивую систему, ноProxyно не могуIE11в ходе выполненияpolyfill. Это самое большое препятствие, потому что это означает, что еслиVue3Для поддержки IE11 на самом деле необходимо поставлять две разные версии с разным поведением: одна основана наProxyотзывчивая система, в то время как другой использует что-то вродеVue2на основеES5изgetter / setterсистема.

Vue3на основеProxyАдаптивная система обеспечивает практически полный охват языковых возможностей. Он может обнаруживать многиеES5Операции, которые невозможны или невыполнимы, такие как добавление свойств, удаление, индексация массива и изменение длины, а также проверка оператора in. дляVue3изProxyверсия того же кода, написанного наIE11версия вообще не работает. Это не только приносит нам техническую сложность, но и постоянную умственную нагрузку на разработчиков.

Наш первоначальный план состоял в том, чтобыIE11поставляются одновременно в разрабатываемой версииProxyа такжеES5отзывчивая реализация. когда он поддерживаетProxyПри работе в среде разработки он обнаружит и предупредит о несовместимостиIE11Применение. Теоретически это возможно, но создает большую сложность из-за необходимости смешивать две реализации вместе и риска различий в поведении между разработкой и производством.

бремя долгосрочного обслуживания

служба поддержкиIE11Также это означает, что мы должны рассмотреть языковые функции, используемые в кодовой базе, и выбрать правильный для нашего субподряда.polyfillСтратегия.IE11не может бытьpolyfillКаждая добавленная новая функция вызывает еще одно поведенческое предупреждение. однаждыVue3обещалIE11поддержки, мы не сможем от нее избавиться до следующего основного релиза (Vue4).

Сложность для авторов библиотек

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

вVue3средняя поддержкаIE11, авторам библиотек придется учитыватьVue3сборок (все еще может поддерживатьVue2) если они решат поддержатьIE11, вы должны рассмотреть возможность использованияES5Реактивные принципы для написания своей библиотеки.

Вклад в устойчивость IE11

никто не любит поддерживатьIE11. Это браузер, который был прекращен. По мере того, как веб-экосистема движется вперед, нам необходимо преодолеть все большие пробелы, пытаясь поддерживать ее. И как ни странно, если вVue3средняя поддержкаIE11, это эквивалентно тому, чтобы дать ему больше причин быть сильным. Учитывая нашу пользовательскую базу, сдавайтесьIE11поддержка может сделать его устаревшим быстрее.

Для тех, кому абсолютно необходима поддержка IE11

Мы знаем, что для тех, кто действительно нуждаетсяIE11людей: финансовые учреждения, сектор образования и зависимыеIE11Люди с программами чтения с экрана. Если вы хотите создавать приложения, ориентированные на эти области, у вас может не быть выбора.

Если вам действительно нужно быть совместимымIE11, мы рекомендуем использоватьVue2. потому что вместоVue3а такжеVueбудущие версии .2.7в версииVue2Шерстяная ткань. И было бы более разумно обеспечить более свежий опыт разработки для двух основных выпусков.

Некоторые функции, которые можно перенести в версию 2.7:

  • Буду@vue/composition-apiПлагины объединены вVue2середина. Это будет основано наComposition APIБиблиотека напрямую применима кVue2а такжеVue3
  • <script setup>Синтаксис в компонентах одного файла
  • emitsОпции
  • TypeScriptУлучшения типа
  • существуетViteофициально поддерживается вVue2

Примечание. Приведенный выше список является предварительным, подробности будут обсуждаться/дорабатываться в отдельном RFC.

Эпилог

Эта статья была впервые опубликована в публичном аккаунте:«Фронтальное обучение не движется»

Замечательные статьи в прошлом