babel转码器,用于把es6的语法转成浏览器支持的es5或者es3
babel转换后的代码是遵循commonJS规范的,而这个规范,浏览器并不能识别。因此导入到浏览器中会报错,而nodeJS是commonJS的实现者,所以在babel转换后的代码是可以在node中运行的。
为了将babel生成的commonJS规范的es5写法能够在浏览器上直接运行,我们可以使用webpack这个打包工具来完成,因为webpack本身也是遵循commonJS这个规范的
在es2015之前,js没有模块化的规范,Nodejs的CommonJS率先制定了js的模块化标准,当然也是仅仅限制在Nodejs的服务器环境下使用
webpack如何安装使用babel-loader?(注意:新版本的Babel7中对官方提供的依赖使用了命名空间@babel)
1.下载
npm install babel-loader @babel/core @babel/preset-env --save-dev
2.安装完上述内容之后,需要设置一个.babelrc的文件放在根目录下,内容为
{
"presets": ["env"]
}
注:项目中现在一般直接使用babel-preset-env,它整合了babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017,而且可以配置需要支持的浏览器/运行环境,仅转化需要支持的语法,使文件更轻。
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码;如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
安装命令如下。
$ npm install --save babel-polyfill
然后,在脚本头部,加入如下一行代码。
import 'babel-polyfill';
// 或者
require('babel-polyfill');