- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在学习 JavaScript,有人说在我学习了 HTML 和 CSS 以及 vanilla Javascript 之后,我需要了解有关 ES6/ES2015 的知识。当我在 Youtube 上观看教程时,它说我们需要 Babel 或类似的东西才能让浏览器阅读它。所以我很想知道,因为那个视频并没有那么旧(但仍然很旧)。是否仍然需要 Babel 或者我应该跳过 Babel 的事情?
最佳答案
Babel是一个 JavaScript 到 JavaScript 的编译器,有时称为转换器,它将使用一组功能(例如 ES2015 及更高版本中的功能)编写的代码转换为可以在 JavaScript 环境中运行的代码不支持这些功能。 (还有其他的,Babel 只是一种非常流行的。)
是否使用 Babel 将 ES2015+ 代码转换为 ES5 完全取决于您,并且取决于您想要支持的目标环境。例如,如果您想支持任何版本的 Internet Explorer(包括 IE11),则需要进行转译。如果您只需要支持尖端的 Chrome、Firefox 和 Edge,或者其他可以依赖您正在使用的功能的环境(例如最新的 Node.js 安装),那么您不需要。
Kangax 有一组 handy tables了解哪些 JavaScript 引擎和/或浏览器支持 JavaScript 的哪些更现代的功能(不仅是 ES2015,还有 ES2016、ES2017 等)。
Babel(以及类似的工具)除了使用最新的标准化功能之外,还至少有两种用途:
您可以使用 Babel(和类似的)来利用可能很快就会标准化的功能,即使它们尚未得到很好的支持。例如,公共(public)类字段的基础知识已经很长时间没有改变了,但是the proposal they're in仍然(截至 2018 年 6 月撰写本文)处于第 3 阶段(并且在第 2 阶段和第 3 阶段之间来回了几次),原因与公共(public)类字段无关,甚至与 Chrome 等尖端浏览器无关, Firefox 和 Edge 还支持公共(public)类字段。但现在,通过转译器使用类字段是很常见的。
您可以编写自己的 Babel(或类似的)转换,以将您自己的功能添加到 JavaScript 中,用于您自己的项目(或使用其他人编写的功能),即使这些功能永远不会成为 JavaScript 的一部分或在您的项目之外使用。
1 注意:Internet Explorer is sunset as of June 15th 2022在大多数版本的 Windows 中。但 Microsoft Edge 中有一个“Internet Explorer”模式,天助我们,它实际上从该模式下的 JavaScript 环境中删除了模板文字、for-of
等功能。
关于javascript - 2018年还需要Babel吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486691/
我正在为我的 React 项目设置 Webpack,并对 babel 感到困惑, babel-core , babel-loader , babel-preset-2015和babel-preset-
所有这些 babel 依赖项是什么?它们各自的用途是什么,它们有何不同?我应该为我的 nodejs 网络应用程序使用哪一个? 我已经查看了 API 网站,但是否有任何指南可以将这些内容转化为简单的人类
我的 Node Webpack 项目使用了三个 babel 库。它们之间有什么区别以及如何使用它们? "dependencies": { "babel-runtime": "^5.8.24" }
我用 @babel/core 替换了 babel-core 而 babel-loader 期望 babel-core: { "name": "myproject-ui", "version":
我尝试配置一个环境来使用 babel 和 webpack 开发 javascript。 但是我不明白关于presets的babel配置. 在 Usage Guide ,我们可以看到预设为 "@babe
我已经安装了 babel 7.5,理想情况下它应该以 preset-env 包为目标,但不确定它为什么要寻找“babel-preset-es2015”。 你们能告诉我我做错了什么吗?下面是我的代码 p
我正在更新a boilerplate中使用的babel包,从 babel-core、babel-register 等到@babel/core、@babel/register > 等 问题:在 npm
设置 通天塔 6 (^6.0.0), Node 5.4.0,Express 4.13.x, babel-node 和 babel-register 都有警告,禁止在生产环境中使用babel.io 网站
我正在尝试转换编译我的 react/es6 代码并且来自 browserify。由于新的 babel 6 版本以及大多数教程现在已经过时的事实,我正在努力创建一个 webpack 构建。这适用于我的
我有一个使用 Typescript 和 @babel/preset-env 的项目。与 Webpack 捆绑失败并显示此错误和以下配置。 如果我取消注释该行,这会强制 @babel/plugin-pr
我在浏览器中使用 babel -> babel-standalone 现在我想使用 ES decorator 语法。但是所有的通天塔doc intro 是服务器端的 babel,比如 ` { "p
我正在编写对从 cdnjs.com 引入的所有这些库的 react 。但是,我发现它报告错误:'Uncaught TypeError: Cannot read property 'keys' of u
我正在使用 babel v7.6.x 并设置了以下内容。 包.json "scripts": { "dev": "nodemon --exec babel-node bin/index.js
我正在学习巨大的 JavaScript 生态系统,但我无法理解以下内容。 Babel 是一个编译器,来自官网: Babel is a toolchain that is mainly used to
在我使用yarn add -D babel-plugin-react-relay安装relay-query插件后,并在运行开发服务器后,我收到此错误: Error: [BABEL] /Users/ne
我使用 babel 6 和 React 插件,并按照文档说明设置转译过程。我已经阅读过要让 React 工作,我需要使用 es2015 和 React preset。最初,使用这两个预设一切都运行良好
我对 Babel 选项/配置有点迷失。我想使用最新的 js 功能并编译(使用 webpack)为浏览器代码。 babel-polyfill 和有什么区别和 babel plugins与 babel-p
这个问题在这里已经有了答案: Babel file is copied without being transformed (10 个答案) 关闭 6 年前。 我只是使用 npm (npm inst
安装时 npm install browserify babelify babel-preset-es2015 我正面临以下警告信息 npm WARN deprecated babel-preset-
什么版本的标准? 12.0.1 什么操作系统、Node.js 和 npm 版本? 视窗 10, 节点 v10.15.1, NPM v.6.8.0 你期望会发生什么? 我在 devDependencie
我是一名优秀的程序员,十分优秀!