es6的角形填充物

时间:2018-03-20 19:32:34

标签: angular typescript ecmascript-6

我正在浏览下面列出的角度文档以及网络上有关角度的其他一些链接。如果所有代码都是在Typescript中编写的,那么es6 polyfill的需求是什么。另外我的理解是最终webpack将代码转换为ES5,那么polyfill在哪里使用?

https://angular.io/guide/browser-support

https://github.com/xiaomoinfo/Angular2/blob/master/how-angular-works/inventory-app/src/polyfills.ts

Ionic 3 - Polyfill for ES6 in IE11 Not Working

1 个答案:

答案 0 :(得分:2)

Angular是使用现代浏览器中的功能构建的。在该现代浏览器中运行时,它使用该浏览器的内置功能。<​​/ p>

为了在没有这些内置功能的旧浏览器中运行,您可以添加“polyfills”,为旧浏览器添加更新的功能。

旧版浏览器的一些兼容性问题可以通过转换来解决,例如将ES6语言语法转换回适用于ES5的东西。但是,其他功能(如ES6中的Map对象)需要进行填充,以便可以在较旧的浏览器中使用。

来自Angular上的链接:

  

Angular建立在Web平台的最新标准之上。针对如此广泛的浏览器具有挑战性,因为它们不支持现代浏览器的所有功能。

     

您可以通过为必须支持的浏览器加载polyfill脚本(“polyfill”)来进行补偿。下表列出了您可能需要的大部分填充物。

这是一种设计方法,可为您提供针对最新浏览器进行优化的代码设计,但可以通过一些额外的工作(包括一些polyfill)与旧版浏览器一起使用。

早期版本的jQuery等库选择了不同的方法。他们不是使用polyfills,而是创建他们自己需要的功能实现(例如deferreds),并在所有代码中使用它们而不管浏览器。虽然这对开发人员来说很容易部署,但随着时间的推移它会遇到问题。 jQuery代码变得臃肿,因为它添加了现在内置于现代浏览器的代码,并且一些jQuery实现与现代标准(例如Promises)不兼容。

因此,Angular的一些功能需要在ES6中实现的库。透明化不会消除对这些库的需求。他们仍然需要存在。这就是polyfills的用途。使用angular,您可以决定要支持的旧浏览器级别,然后添加所需的polyfill。 Angular并不会自动为您做到这一点。