Javascript 在所有浏览器支持下使用ES6功能

Javascript 在所有浏览器支持下使用ES6功能,javascript,Javascript,我想在脚本中使用ES6功能,并让所有浏览器都支持它。我该怎么做,我能吗 我一直在考虑使用一些工具,将我的代码在git上自动转换为ES5,然后在服务器上拉它,并从中创建第二个文件。然后在浏览器中,我可以使用其中一个脚本,具体取决于浏览器及其版本 这可能吗 但是,这会产生一些问题: 转换后的代码将具有与编写代码相同的性能 在ES5本地 我必须在HTML中编写某种if,我想 只包含一个脚本,不包含任何其他内容 最好的方法是什么?在更多浏览器支持ES2015(又称ES6)功能之前,使用Transpile

我想在脚本中使用ES6功能,并让所有浏览器都支持它。我该怎么做,我能吗

我一直在考虑使用一些工具,将我的代码在
git上自动转换为ES5,然后在服务器上拉它,并从中创建第二个文件。然后在浏览器中,我可以使用其中一个脚本,具体取决于浏览器及其版本

这可能吗

但是,这会产生一些问题:

  • 转换后的代码将具有与编写代码相同的性能 在ES5本地
  • 我必须在HTML中编写某种if,我想 只包含一个脚本,不包含任何其他内容

  • 最好的方法是什么?

    在更多浏览器支持ES2015(又称ES6)功能之前,使用Transpiler和polyfills将是唯一的方法。签出以确定您现在可以为站点支持的浏览器使用哪些功能

    请记住,ES6有两个主要部分:

  • 新的语言特征
  • 新的本机API功能
  • 除非您的站点支持的所有浏览器都支持新的ES6语言功能,否则您将无法在脚本中使用它们,除非先将它们传输到ES5等效版本。我用过,效果很好。生成的ES5等效代码执行得很好。我也不想手动编写等效的ES5代码。babel生成的代码已经由babel的测试套件进行了彻底的测试,并且已经被世界各地的数千名开发人员使用。此外,使用ES6编写代码更短,更易于维护。这节省了很多开发人员的时间。当有一天,站点支持的所有浏览器都支持所有ES6功能时,您就可以关闭构建中的传输步骤,而不必手动将手动编写的ES5代码转换为ES6,就可以充分利用本机浏览器的性能

    许多新的本机API功能现在可以通过提供。仅当您希望使用ES6功能时才需要polyfill,并且需要支持较旧的浏览器。使用polyfill,较旧的浏览器可能比本机实现的性能更低。由于大多数现代浏览器已经支持许多本机ES6 API功能,您的许多用户将获得浏览器本机实现的全部性能。根据我使用polyfills的经验,我没有注意到任何显著的性能影响

    如果您担心现代浏览器不必要地下载和运行all for Nout,那么您可以使用以下技术将影响降至最低:

  • 在服务器端,您可以检测发出请求的浏览器,并确定是否需要在响应中发送polyfill脚本标记
  • 您可以正确设置polyfill的版本,并确保设置了web服务器的缓存,以便浏览器在初次下载后很少会请求polyfill
  • 以前可以在html文件中传输ES6代码,但该功能已被删除。您只需将嵌入的代码移动到单独的外部JavaScript文件中即可。如果您不喜欢引发另一个请求来获取此外部JavaScript文件,那么可以执行以下操作:

  • 在单独的文件中编写ES6代码
  • 通过babel运行此文件
  • 使用服务器端脚本语言将传输的内容直接包含在HTML中

  • 在更多浏览器支持ES2015(又称ES6)功能之前,使用Transpiler和PolyFill将是唯一的选择。签出以确定您现在可以为站点支持的浏览器使用哪些功能

    请记住,ES6有两个主要部分:

  • 新的语言特征
  • 新的本机API功能
  • 除非您的站点支持的所有浏览器都支持新的ES6语言功能,否则您将无法在脚本中使用它们,除非先将它们传输到ES5等效版本。我用过,效果很好。生成的ES5等效代码执行得很好。我也不想手动编写等效的ES5代码。babel生成的代码已经由babel的测试套件进行了彻底的测试,并且已经被世界各地的数千名开发人员使用。此外,使用ES6编写代码更短,更易于维护。这节省了很多开发人员的时间。当有一天,站点支持的所有浏览器都支持所有ES6功能时,您就可以关闭构建中的传输步骤,而不必手动将手动编写的ES5代码转换为ES6,就可以充分利用本机浏览器的性能

    许多新的本机API功能现在可以通过提供。仅当您希望使用ES6功能时才需要polyfill,并且需要支持较旧的浏览器。使用polyfill,较旧的浏览器可能比本机实现的性能更低。由于大多数现代浏览器已经支持许多本机ES6 API功能,您的许多用户将获得浏览器本机实现的全部性能。根据我使用polyfills的经验,我没有注意到任何显著的性能影响

    如果您担心现代浏览器不必要地下载和运行all for Nout,那么您可以使用以下技术将影响降至最低:

  • 在服务器端,您可以检测发出请求的浏览器,并确定是否需要在响应中发送polyfill脚本标记
  • 您可以正确设置polyfill的版本,并确保设置了web服务器的缓存,以便浏览器在初始dow之后很少会请求polyfill