Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何安全地使用ES6新功能?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 如何安全地使用ES6新功能?

Javascript 如何安全地使用ES6新功能?,javascript,ecmascript-6,Javascript,Ecmascript 6,有许多ES6功能看起来很棒,比如=>语法、映射对象,以及一个长的等等 老实说,由于ie8 attachEvent,我有点厌倦了检查是否有对addEventListener的支持,我不希望这种痛苦回到我的生活中 那么,你将如何应对这种新的可能性呢?(或者,比方说,一年左右你会怎么做)。您会不会将它们用于基本操作,而是添加另一层额外的功能?您是否只将其用于您知道将在支持它们的浏览器中运行的应用程序?你会等到至少有90%的支持吗 我知道这些都是很好的特性,但对于短期到中期的使用,您似乎需要加倍您的代码

有许多ES6功能看起来很棒,比如
=>
语法、
映射
对象,以及一个长的等等

老实说,由于ie8 attachEvent,我有点厌倦了检查是否有对addEventListener的支持,我不希望这种痛苦回到我的生活中

那么,你将如何应对这种新的可能性呢?(或者,比方说,一年左右你会怎么做)。您会不会将它们用于基本操作,而是添加另一层额外的功能?您是否只将其用于您知道将在支持它们的浏览器中运行的应用程序?你会等到至少有90%的支持吗

我知道这些都是很好的特性,但对于短期到中期的使用,您似乎需要加倍您的代码检查和后备支持

关于这个问题有什么启示吗

编辑:请不要将此标记为重复。请注意,我不是问如何检查支持,我是问开始使用它是否明智,还是等待更好。我还想问的是,支持检查是否是最好的选择,而不是如何做,或者在设计代码时是否有其他方法进行处理。

您可以使用或


您必须在构建过程中包含一个步骤,将ES6、ES7代码转换为与当今浏览器兼容的Javascript。像一项任务或任务。Babel有一个受支持的工具列表

tl;dr:使用输送机和聚填料


您是否应该使用新功能主要取决于您的目标环境以及您使用新功能的确切方式。例如,如果您只针对最新的浏览器版本,则不会出现问题。你必须支持IE8吗?这可能更加困难

不过,一般来说,您应该尽快开始使用新功能,并使用有助于实现这一点的工具


有两个方面需要考虑:

  • 新API
  • 新语法结构
API

新的API通常(但并非总是)是多填充的。也就是说,您包括一个库,用于检查API的某些部分是否存在,例如,
Map
,如果不存在,则提供替代实现

这些替代实现可能不是100%等效的,或者可能没有本机实现那么高的性能,但我认为它们在所有用例中都能工作95%

polyfills的好处在于,如果本机浏览器实现可用,您将自动使用它

语法

使用新的语法结构,如箭头函数或类,有点复杂(但不多)。最大的问题是,不支持语法的浏览器甚至无法计算您的代码。您只能将代码发送到浏览器,而浏览器实际上可以解析代码

幸运的是,许多新的语法元素,如箭头函数,实际上只是ES5中已经存在的语法糖。因此,我们可以将ES6代码转换为ES5甚至ES3等效代码

在过去的一两年中,出现了几种称为transpilers的工具。请注意,在将代码发送到浏览器之前,transpiler必须先转换代码。这意味着,与简单地编写JS文件并直接包含在页面中不同,您需要有一个先转换代码的构建步骤(就像我们在其他语言(如C或Java)中所做的那样)

这与几年前我们编写JS的方式不同,但是JS社区越来越接受构建步骤。也有许多构建工具试图使这尽可能不费力


一个缺点是,与polyfills不同,如果本机功能可用,您将无法神奇地使用它们。因此,在您的所有目标环境都支持您所需的所有功能之前,您可能会在很长一段时间内一直使用Transpile版本。但这可能还是比完全不使用新功能要好。

的可能副本的可能副本,您想对此进行更多解释吗?非常清楚且有用的解释!我很好奇:你已经在使用这些功能了吗?你能告诉我哪些吗?@Vandervals:主要是箭头函数、生成器、迭代器和类。在过去的几个月里,巴贝尔真正确立了自己作为运输商的地位。我正在使用它的项目:(虽然,这一个有一个相当复杂的构建过程)。因为你很好,我不介意问:你有没有java或其他基于类的语言的经验,使你的跳跃更容易?(我这样问是因为我在你的个人资料中看不到这一点)我在一定程度上了解Java,但我并不积极使用它。