为什么用babel编译后const、let、arrow函数还存在?
After using babel to compile, why does const、let、arrow function still exist?
using babel to compile
之前
let name="Alex";
const age=18;
const add=(x,y)=>x+y;
使用babel编译后
"use strict";
let name = "Alex";
const age = 18;
const add = (x, y) => x + y;
我真的很困惑,为什么它根本没有改变任何东西。
一切都与您选择的目标有关。如果您只想为使用现代浏览器的人提供该应用程序,何必费心调整他们完全理解的语法?
在这种特殊情况下,它甚至与 'modern' 无关:它与不古老有关。 let/const 和箭头函数支持是在 2016 年发布的浏览器中引入的——五年前。
使用 Babel,您通常通过设置 @preset-env 然后通过一些使用编号选择目标列表来配置您的目标:
{
"targets": "> 0.25%, not dead"
}
... 或直接通过提供指定最低版本支持的对象:
{
"targets": {
"chrome": "58",
"ie": "11"
}
}
现在 Babel 有责任识别所提供的(明确或隐含的)浏览器列表确实支持的功能 - 并填充它不支持的功能。
你可以玩这个设置 in your browser。例如,以下是将 'ie 11' 设置为目标时代码的转换方式:
... 以下是 Chrome 91:
的查找方式
using babel to compile
之前
let name="Alex";
const age=18;
const add=(x,y)=>x+y;
使用babel编译后
"use strict";
let name = "Alex";
const age = 18;
const add = (x, y) => x + y;
我真的很困惑,为什么它根本没有改变任何东西。
一切都与您选择的目标有关。如果您只想为使用现代浏览器的人提供该应用程序,何必费心调整他们完全理解的语法?
在这种特殊情况下,它甚至与 'modern' 无关:它与不古老有关。 let/const 和箭头函数支持是在 2016 年发布的浏览器中引入的——五年前。
使用 Babel,您通常通过设置 @preset-env 然后通过一些使用编号选择目标列表来配置您的目标:
{
"targets": "> 0.25%, not dead"
}
... 或直接通过提供指定最低版本支持的对象:
{
"targets": {
"chrome": "58",
"ie": "11"
}
}
现在 Babel 有责任识别所提供的(明确或隐含的)浏览器列表确实支持的功能 - 并填充它不支持的功能。
你可以玩这个设置 in your browser。例如,以下是将 'ie 11' 设置为目标时代码的转换方式:
... 以下是 Chrome 91:
的查找方式