适用于现代浏览器的ES7至ES6

时间:2018-06-01 12:44:25

标签: javascript reactjs nginx babeljs transpiler

我有一个用es6 / 7编写的反应应用程序,我很高兴使用babel来转换为es5以与所有浏览器兼容。

这让我感到疑惑......

是否可以创建一个转换为es6的js包,如果它是现代浏览器,那么可以通过nginx来提供服务?这应该节省文件大小和可能的执行时间。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用Babels env预设来创建多个版本的捆绑包,以提供各种级别的浏览器兼容性。

例如,此 .babelrc 将创建一个与Firefox 50及以上版本兼容的软件包:

{
  "presets": [
    ["env", {
      "targets": {
        "browsers": ["Firefox > 50"]
      }
    }]
  ]
}

没有任何参数, env 插件将创建一个适用于各种浏览器的捆绑包,这可能比专为现代浏览器(如Firefox)专门构建的捆绑包大得多:

{
  "presets": ["env"]
}

env 预设使用browserslist来指定Babel应用作转换目标的浏览器。浏览器列表具有一种查询语言,允许您按类型,平台,版本,使用情况统计等指定浏览器。查看其文档以确定要为特定受众使用的查询。

您可以在命令行上试用browserslist查询,如下所示:

npx browserslist "> 10%, last 3 versions"

这将为您提供最近3个浏览器的列表,这些浏览器的使用率高于10%。

一旦您确定了哪些browserslist查询适合您创建一个大型捆绑包以实现最大的浏览器兼容性,并且对于现代浏览器更轻薄,您可以使用ngx_http_browser_module来提供捆绑服务,具体取决于传入请求的用户代理。