Vue 3 рекомендуемый компилятор TypeScript TSConfigОпции настройки TARGET? - PullRequest
2 голосов
/ 21 апреля 2020

Этот вопрос меня несколько озадачил при использовании Vue 2 и Vue CLI, а теперь снова при запуске бета-проекта fre sh Vue 3.0.

Даже с текущими новейшая Vue CLI версии 4.3.1, при выборе опции TypeScript, полученный вами шаблонный код имеет цель compilerOptions , установленную как esnext в tsconfig.json.

В то время как Vue 2 Руководство по TypeScript инструктирует:

# Recommended Configuration
// tsconfig.json
{
  "compilerOptions": {
    // this aligns with Vue's browser support
    "target": "es5",
    // this enables stricter inference for data properties on `this`
    "strict": true,
    // if using webpack 2+ or rollup, to leverage tree shaking:
    "module": "es2015",
    "moduleResolution": "node"
  }
}

В настоящее время Vue В следующем репо используется esnext, хотя на данный момент поддержка IE11 еще не готов (но может никак не повлиять на эту конфигурацию) ...

Каким будет рекомендуемое значение для этой цели компилятора при использовании Vue 3?

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

1 Ответ

1 голос
/ 07 мая 2020

Как Vue 3 репозитория состояний,

текущей реализации требуется собственный ES2015 + в среде выполнения и не поддерживает IE11 (пока). Совместимая с IE11 сборка будет работать после того, как мы достигнем стадии R C.

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

Проект, использующий существующую сборку Vue 3, не получит выгоды от target ниже, чем es2018, который, вероятно, является наименьшим общим знаменателем, разброс объектов входит в число самых популярных последних дополнений, которые используются в Vue 3 кодовой базе и не могут быть заполнены поли-кодом. Цель TypeScript можно экспериментально снизить до es5 с включенной опцией downlevelIteration для раннего обнаружения некоторых проблем совместимости.

Ожидается, что отдельные версии Vue 3 будут поддерживаться для устаревших (IE11) и современных браузеры. Разница в том, как обрабатывается реактивность, потому что Proxy допускает расширенное обнаружение изменений, но не может быть реализовано в старых браузерах. Проект должен следовать существующим рекомендациям для Vue 2 реактивности , чтобы быть совместимым с устаревшей Vue 3 сборкой.

...