Привет, Big Ben & Poor's, Vue 3 IE11 не поддержит

Vue.js
Привет, Big Ben & Poor's, Vue 3 IE11 не поддержит

Во время фестиваля Цинмин было много дождя, и Ю Да опубликовал пост о разбитой душе. Правильно, в последние несколько дней маленького праздника все были в курсе новостей о Ю Да, который любит делать что-то во время праздника. Рано утром 3 апреля Ю Да опубликовал статью о Чжиху под названием «[RFC] Поддержка IE11 для Vue 3статья о предложении отказаться от поддержки IE11 в Vue 3:

截屏2021-04-06 上午6.46.59.png

Когда я увидел эту новость, мое сердце даже не дрогнуло.Потому что нас слишком долго тормозил IE. Я считаю, что многие студенты, которые все еще создают страницы для ПК, сильно пострадали от IE.Я до сих пор помню, что когда я впервые создал веб-страницу в 2009 году,Сосредоточьтесь на совместимости с IE5; Когда-то вопросы совместимости с IE все еще были частой темой на собеседованиях по интерфейсу. Через 12 лет от IE11 окончательно отказалась сама Microsoft.

Многие студенты в сообществе впервые переводили оригинальный текст РЧЦ.Я делал прививку во время каникул и все время отдыхал.Я только вчера начал перевод. В дополнение к переводу RFC, давайте взглянем на некоторые точки знаний этой новости:

Точка знаний

Что такое RFC

RFC на английском языкеRequest For Comments, что означает просить совета. В React также есть RFC. Будь то React или Vue, когда автор или разработчик хочетПри внесении большого количества изменений или добавлении новых функций, вообще нужно написать предложение, предложение должно содержать этот вопросмотивацияа такжедетальный дизайн.

React представлен на React Conf 2018React HooksЭто в форме RFC. На этот раз «поддержка IE11 для Vue 3» также является RFC, что означает,Этот вопрос требует консультаций с сообществом и не является окончательным решением..

Однако в целом RFC хорошо продуманы и называются предложениями RFC, особенно собственными предложениями автора,в основном проходят, просто чтобы добавить больше деталей к обсуждению.

Текущее состояние IE11 — ни одному отцу это не нравится

Microsoft отказалась от старого браузера-сына IE и вложила больше энергии в новый сын Edge. Многие из его основных продуктов, например Microsoft 365, больше не поддерживают IE11. Сегодня глобальное использование IE11 упало до менее 1%. Такая невыносимая ситуация, старый IE должен был исчезнуть раньше.

VUE не поддерживает IE11, что делать пользователям IE

конечно, нет, Vue по-прежнему поддерживает IE11 в версии 2.X, если вы хотите использовать новые функции, такие как Vue 3,Можно дождаться версии Vue 2.7. В этом RFC было объявлено, что версия 2.7 будетОбратная совместимость, чтобы перенести некоторые новые функции 3.x, чтобы обеспечить одинаковый опыт разработки между двумя версиями. Увидев практику Ю Да, я тоже многому научился. Много раз, если вы передумаете, вы сможете увидеть мир широко открытым.

перевод RFC

  • Дата начала: 2021-04-02
  • Целевая версия: 3.x
  • Справочная проблема: нет данных
  • Достичь PR: N/A

Резюме

  • Удалите поддержку Vue 3 для IE11.
  • Перемещение усилий по переносу функций совместимости переноса в Vue 2.7.

мотивация

Нам задавали вопросы о поддержке IE11 с начала разработки Vue 3 до конца 2018 года. Многие пользователи спрашивали, будет ли Vue 3 поддерживать IE11, и наш первоначальный план состоял в том, чтобы сначала выпустить Vue 3, дать ему стабилизироваться, а затем добавить поддержку IE11 на более позднем этапе. В течение длительного процесса разработки мы провели дополнительные исследования и эксперименты с совместимостью IE11, но из-за сложности и объема другой работы эта работа была лишена приоритета.

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

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

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

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

Реактивная система Vue 2 основана на геттерах/сеттерах ES5. Vue 3 использует прокси-сервер ES2015 для реализации более высокой производительности и более полной отзывчивой системы, но он не может использовать эту функцию в IE11. Это было нашим самым большим препятствием, потому что это означало, что если бы мы поддерживали IE11, нам пришлось бы выпускать две версии с разным поведением: одну на основе реактивной системы на основе прокси, а другую на основе ES5, аналогичную Vue 2 A. реактивная система для функций геттера/сеттера.

Реактивная система Vue 3 на основе прокси обеспечивает почти полный охват языковых функций. Он может обнаруживать многие операции, которые совершенно не обнаруживаются в ES5, такие как добавление или удаление свойств, индексация и изменение длины массивов,inпроверка оператора. Код, основанный на версии Proxy, не будет работать в IE11. Это не только приносит нам техническую сложность, но и создает постоянную умственную нагрузку на разработчиков.

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

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

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

Усложняет жизнь разработчикам библиотек

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

Поддерживая IE11 в Vue 3, авторы библиотек, по сути, должны принять такое же решение. Авторы библиотек должны думать о том, на какой версии Vue 3 работает их библиотека (и, возможно, о поддержке Vue 2). Если они решат поддерживать IE11, они также должны помнить о предостережениях реактивной системы ES5 при написании библиотеки.

Вклад в дальнейшее существование IE11

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

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

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

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

Некоторые функции, которые могут быть изменены в версии 2.7:

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

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