Вот шаги, которые я предпринял, чтобы перейти на nuxt 2.2.0
и заставить мое приложение работать на IE 11 с необходимыми полифилами.Ваш опыт может отличаться в зависимости от установленных пакетов.
Шаг 1
Удалить build.vendor
и build.babel
из nuxt.config.js
.
build.vendor
устарела.Я попытался настроить build.babel
, так как nuxt docs указывает, что по умолчанию используется vue-app
.Я думаю, что на самом деле он использует babel-preset-env .Это, наряду с другими инструментами, зависит от browserslist , который имеет некоторые рациональные значения по умолчанию .Я не изменил конфигурацию списка браузеров, но вы могли бы, следуя их документам .
Шаг 2
Обновлять или заменять любые модули, вызывающие сборкупроблемы.Когда я обновил, у @nuxtjs/apollo
была проблема с транспиляцией через одну из его зависимостей.С тех пор это было разрешено , однако в итоге я переключился на vue-apollo
+ apollo-boost
, так как он лучше подходил для моего проекта.
Шаг 3
Добавьте полифилы для любых дополнительных функций core-js
не предоставляет, но это нужно вашим целевым браузерам.Вы должны быть в состоянии определить их на основе любых исключений, выданных в консоли во время тестирования ваших целей.
Я использовал polyfill.io , добавив следующее к nuxt.config.js
:
const features = [
'fetch',
'Object.entries',
'IntersectionObserver',
].join('%2C');
head: {
script: [
{ src: `https://polyfill.io/v3/polyfill.min.js?features=${features}`, body: true },
],
},
Примечание: Я включил body: true
, который перемещает скрипт из раздела head
вашей страницы.Однако он будет вставлен до любого кода вашего приложения.
Примечание: IntersectionObserver
рекомендуется для предварительной выборки ссылки .
Вы можете создать аналогичный URL с помощью builder .Обратите внимание, что после того, как вы выберете функцию, строитель автоматически выберет default
, что (насколько я могу судить) функционально эквивалентно полифиллам, которые поставляются с core-js
.Поскольку core-js
в настоящее время не является обязательным (вы все равно его отправите), имеет смысл не включать набор default
из polyfill.io
.
для углубленного обсуждения полифиллов.и почему polyfill.io
, вероятно, хорошая идея, см. этот пост .Короткая версия заключается в том, что он загружает только то, что действительно нужно клиенту, на основе UA браузера.
Наконец, вам необходимо протестировать приложение, чтобы увидеть, какие дополнительные функции (если таковые имеются) необходимы для успешного выполнения.в данном браузере.Возможно, вам придется повторить этот процесс несколько раз, пока все ошибки не исчезнут.Обязательно тестируйте на нескольких страницах, поскольку не все ваши комплекты страниц будут иметь одинаковые требования.
Заключение
Хотя некоторые аспекты выше относятся к конкретному приложениюНадеюсь, это поможет вам двигаться в правильном направлении.Наиболее важный вывод заключается в том, что единого решения для этого нет - вам все равно придется протестировать в целевых браузерах, чтобы убедиться, что код выполняется.