我有一个用es6 / 7编写的反应应用程序,我很高兴使用babel来转换为es5以与所有浏览器兼容。
这让我感到疑惑......
是否可以创建一个转换为es6的js包,如果它是现代浏览器,那么可以通过nginx来提供服务?这应该节省文件大小和可能的执行时间。
答案 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来提供捆绑服务,具体取决于传入请求的用户代理。