【问题标题】:Do we need to compile code in ES5 to support IE 11 in angular 9?我们是否需要在 ES5 中编译代码以支持 Angular 9 中的 IE 11?
【发布时间】:2020-06-29 15:35:52
【问题描述】:

我正在开发一个 Angular 9 应用程序,我想知道,我是否仍需要编译针对 es5 的代码(因为 IE 11 仍然不支持 ES6)。问这个问题的原因是,As angular 的差异加载特性会为不支持 ES6 的浏览器提供 es5 包。 我的意思是 Angular 9 项目的构建输出已经包含 ES5 和 ES6 中的文件。 我还需要在tsconfig.json中设置target:es5吗?

我的应用只需要支持 IE11,而不需要任何其他版本的 IE。

【问题讨论】:

    标签: angular internet-explorer-11


    【解决方案1】:

    是的,您需要将 IE 11 的 target 更新为 "es5",因为 IE11 最多仅支持 ES5。 你可以参考这个角度文档: https://angular.io/guide/typescript-configuration

    【讨论】:

      【解决方案2】:

      同意Emon,你仍然需要将目标设置为ES 5。更多详细信息请查看Angular Browser support document

      在 Angular CLI 版本 8 及更高版本中,应用程序是使用差异加载构建的,这是一种 CLI 构建两个单独的包作为已部署应用程序的一部分的策略。 第一个包包含现代 ES2015 语法,利用现代浏览器的内置支持,提供更少的 polyfill,并导致更小的包大小。 第二个包包含旧 ES5 语法的代码,以及所有必要的 polyfill。这会导致更大的包大小,但支持较旧的浏览器。

      【讨论】:

      • 是的,这是我的问题,因为我们已经有两个 bundle 了,即使我们没有将目标设置为 es5。并且这些捆绑包将根据它们对 ES6 的支持与否被发送到浏览器。那么为什么我们需要明确地将目标设置为 ES5。如果我们不这样做,那么即使我们有 ES5 包,IE11 也会得到它,因为它不支持 ES6。
      • 默认情况下,在版本 8 及更高版本中,我们为 ng build 启用差异加载。但是对于ng testng serve,我们只生成一个无法在IE 11 中运行的ES2015 构建。因此,我们必须在tsconfig.json 中将目标从es2015 更改为es5。否则,创建tsconfig-es5.app.json 配置文件,然后使用ng serve --configuration es5 运行服务,更多详细信息请查看this link
      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2021-07-02
      相关资源
      最近更新 更多