【问题标题】:Vue 3 recommended TypeScript TSConfig compilerOptions TARGET setting?Vue 3 推荐 TypeScript TSConfig compilerOptions TARGET 设置?
【发布时间】:2020-08-04 04:09:06
【问题描述】:

在使用 Vue 2 和 Vue CLI 时,这个问题在几个方面让我感到困惑,现在又开始一个新的 Vue 3.0 beta 项目。

即使使用当前最新的Vue CLI版本4.3.1,在选择打字选项时,您给出的样板代码是 compileroptions目标设置为 esnext tsconfig.json .

Vue 2 TypeScript Guide 指示时:

# 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 Next repo is using esnext,虽然此时 IE11 支持尚未准备好(但无论如何可能不会影响此配置)...

在使用 Vue 3 时,此编译器目标的推荐设置是什么?

我需要支持低至 IE11 的旧版浏览器,但这个特定的应用项目在它首次发布之前有足够的时间等待 Vue 3 的完整发布。

【问题讨论】:

  • 您链接的仓库明确指出,此外,当前的实现需要在运行时环境中使用本机 ES2015+,并且不支持 IE11(目前)。 IE11 兼容版本将在我们达到 RC 阶段后进行。
  • 感谢您指出埃斯图斯,是否愿意对此做出回答?
  • @EstusFlask 在这里做一个回答,所以我可以奖励你的赏金!
  • 当然。答案目前并不详尽,将来可能会改变。但有一件事是肯定的,你需要注意反应性,以免将来在 IE11 上出现问题。
  • 以后继续调整它就好了:)

标签: javascript typescript vue.js compilation vuejs3


【解决方案1】:

正如Vue 3 repository 所说,

当前的实现需要在运行时环境中使用原生 ES2015+,并且不支持 IE11(目前)。 IE11 兼容版本将在我们达到 RC 阶段后进行。

如前所述,Vue 3 的目标当前是esnext,它依赖于现代 JS 特性,目前针对的是常青浏览器的开发,不应该在生产中使用。即使目标较低,Vue 3 也无法在旧版浏览器中使用,因为它目前依赖于无法填充的 ES6 特性的代理。

使用现有 Vue 3 构建的项目不会受益于 target 低于 es2018 这可能是最不常见的分母,对象传播是 Vue 3 代码库中使用的最流行的最新添加之一,不能填充物。启用 downlevelIteration 选项后,TypeScript 目标可以实验性地降低到 es5,以便及早发现一些兼容性问题。

预计将为旧版 (IE11) 和现代浏览器维护单独的 Vue 3 版本。不同之处在于如何处理响应性,因为Proxy 允许高级更改检测,但无法在旧版浏览器中实现。该项目应遵循Vue 2 reactivity 的现有准则,以便与旧版 Vue 3 版本兼容。

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 2016-05-16
    • 2019-01-13
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多