Babel:JavaScript“编译器”

2019-07-19 11:35:26 浏览数 (1)

1. Babel是啥?能干啥?

Babel是由Node.js承载前端工具生态中的一员,负责“编译”、“转换”无法在各浏览器中直接运行的JavaScript代码为浏览器可识别的代码,为WEB开发人员提供一个规范、统一的开发平台;

Babel能干啥?

1.1. ES6语法降级:

最新的ECMAScript规范为JavaScript编程带来了极大的便利性(比如:箭头函数、局部作用域、异步模型等),但各浏览器厂商对规范的实现仍然远落后于规范的更新速度;Babel的babel-preset-env支持将ES6语法降级转换为ES5语法,这意味着我们可以使用ES6编写程序,而不用担心现有环境是否支持

1.2. JSX语法转换:

在React中使用JSX的好处多多(语义清晰、结构直观、抽象了React Element 的创建过程),但JSX语法不能直接被浏览器识别;Babel的babel-preset-react提供了将JSX语法转换为React Element代码的能力,这意味着我们可以充分利用JSX给我们带来的便利

1.3. Flow注解清除:

Flow就是JavaScript的静态类型检查工具,通过它的注解型语法,可以减少编码中的“类型错误”;同样,Flow的注解语法也无法被浏览器识别,Babel的babel-preset-flow则是主流的用于上线前从源码中剔除Flow语法的工具;

Babel还有很多功能,比如PolyfillSourceMap等,这里就不细说了,有兴趣可以去官网瞅瞅;

简单来说,用上Babel,再也不用担心

“这个特性能在xx浏览器上用么?”

这种问题了

2. Babel的核心组成

babel-cli:命令行工具,用于JavaScript转码

注:babel-cli执行时,会以.babelrc文件中的配置为准;

babel-node: 命令行工具,用于执行JavaScript;

注:babel-node是随babel-cli安装的,无需独立安装;

babel-plugin-xxx:babel的功能都由插件实现,例:

## ES6箭头函数转换插件 npm install --save-dev babel-plugin-transform-es2015-arrow-functions ## ES6展开运算符转换插件 npm install --save-dev babel-plugin-transform-es2015-spread

babel-preset-yyy: preset是plugin的集合,例:

## preset-es2015 npm install --save-dev babel-preset-es2015

## preset-es2016 npm install --save-dev babel-preset-es2016

## preset-es2017 npm install --save-dev babel-preset-es2017

## preset-env包含es2015、es2016、es2017 npm install --save-dev babel-preset-env

注:转换ES6代码,只用babel-preset-env就够了;

3. Babel环境搭建

3.1. 安装Node.js

Babel 是 Node.js 前端工具生态中的一员,所以得先装Node.js。

3.2. 安装babel-cli

babel-cli是命令行工具,用于JavaScript转码;

安装babel-cli: npm install --save-dev babel-cli bebel-cl常见用法: ## 转码结果输出到控制台 babel es6.js ## 转码结果写入文件 babel es6.js -o es6_compiled.js ## -s,生成source map文件 babel es6.js -o es6_compiled.js -s

3.3. 安装babel语法转换插件

## ECMAScript转换插件 npm install --save-dev babel-preset-env ## React转换插件 npm install --save-dev babel-preset-react ## Flow转换插件 npm install --save-dev babel-preset-flow

注1:babel-preset-env是babel-preset-es2015、babel-preset-es2016、babel-preset-2017的进化版,只安装一个babel-preset-env就足够了;

注2:babel-preset-env的详细信息可以参考“http://2ality.com/2017/02/babel-preset-env.html”

3.4. 配置 .babelrc

.babelrc是babel的配置文件,放在项目根目录即可;babel命令执行时会按照此文件中的配置进行代码转换

注:Windows 系统无法直接创建这种命名方式的文件,可以借助IDE工具创建;

3.5. 与Webpack集成

通常Babel不会在项目中单独使用,业界主流做法是将Babel与构建工具Webpack搭配起来,打造完善的“前端工程化体系”;

肿么样?Babel很给力吧?

有兴趣深入挖掘的同学

请访问

参考:

0 人点赞