javascript - 为现代浏览器转译 ES7 到 ES6

标签 javascript reactjs nginx babeljs transpiler

我有一个用 es6/7 编写的 React 应用程序,我很乐意使用 babel 将其转换为 es5 以与所有浏览器兼容。

这让我想知道...

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

最佳答案

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

例如,这个 .babelrc 将创建一个与 Firefox 50 及更高版本兼容的包:

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

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

{
  "presets": ["env"]
}

env 预设使用 browserslist指定 Babel 应该用作转译目标的浏览器。 Browserslist 具有一种查询语言,可让您按类型、平台、版本、使用情况统计信息等指定浏览器。查看他们的文档以确定要为您的特定受众使用哪些查询。

您可以像这样在命令行上尝试浏览器列表查询:

npx browserslist "> 10%, last 3 versions"

这为您提供了使用率高于 10% 的最近 3 个浏览器版本的列表。

一旦您弄清楚哪些浏览器列表查询适合您创建一个大包以实现最大的浏览器兼容性和一个更小的包以适应现代浏览器,您可以使用 ngx_http_browser_module根据传入请求的用户代理服务包。

关于javascript - 为现代浏览器转译 ES7 到 ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50643741/

相关文章:

reactjs - 禁用 hydration/仅部分 hydration Next.js 应用程序

reactjs - 在 react 项目中导入 svg

php - 如何为长轮询配置 nginx(和 php)

php - 允许 php 值只在子目录中工作

javascript - 给定对象 : let obj = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5}; Convert the keys of this object in one array, 和另一个中的值

javascript - 从数组中删除重复值

javascript - 如何切换页面的一部分,以便从一段文本转到另一段文本?

Nginx `proxy_ssl_trusted_certificate` 与 letsencrypt 上游

javascript - 访问数组外部的对象属性

javascript - 为什么有些js文件以(function() {