关闭

ES6之Babel的各种坑总结【转载】

时间: 2018-04-09阅读: 1615标签: babel

自从 Babel 由版本5升级到版本6后,在安装和使用方式上与之前大相径庭,于是写了这篇入坑须知,以免被新版本所坑。


坑一:本地安装和全局安装 

全局安装只需:

$ npm install –global babel-cli 
这时候我们可以使用 Babel 命令编译文件:

$ babel index.js --out-file compiled.js
#或
$ babel index.js -o compiled.js

编译目录:

$ babel src -out-dir lib
#或
babel src -d lib

但是,官方推荐本地安装,是这么说的:

While you can install Babel CLI globally on your machine, it’s much better to install it locally project by project.

There are two primary reasons for this.

Different projects on the same machine can depend on different versions of Babel allowing you to update one at a time.

It means you do not have an implicit dependency on the environment you are working in. Making your project far more portable and easier to setup. 
大致的意思就是:可移植性较好并且没有依赖。

本地安装,记在项目的根目录下:

$ npm install --save-dev babel-cli

但是在本地就不能用 babel 命令了,我们可以在 package.json 文件中添加点东西:

{
    "script": {
        "build": "babel src -d lib"
    }
}

然后,运行 npm run build 即可把 src 目录编译输出到 lib


坑二: 编译插件 

上述编译其实并没有进行,而是原样输出。这是因为我们没有安装相应的插件,官方提示我们需要安装 babel-reset-es2015 插件:

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

然后,在根目录创建一个名为 .babelrc 的文件,里面配置如下内容:

{
    "presets": [
        "es2015"
    ]
}

同理,可以设置 react 的编译插件:

$ npm install --save-dev babel-preset-react

.babelrc 文件里即:

{
   "presets": [
       "es2015",
       "react"
   ] 
}


坑三: babel-polyfill插件 

Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API ,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。Babel 默认不转码的 API 非常多,详细清单可以查看 definitions.js 文件

为了完整使用 ES6 的 API ,我们只能安装这个插件:

$ npm install -save-dev babel-polyfill

然后,在需要使用的文件的顶部引入

import "babel-polyfill"

node.js 中:

require('babel-polyfill');

webpack.config.js 中:

module.exports = {
    entry: ['babel-polyfill', './app/js']
}


作者: Chansi_lEE 
链接:https://www.imooc.com/article/11157 
来源:慕课网


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/606

webpack中配置babel

因为在webpack中,默认只能处理一部分es6的语法,一些更高级的es6和es7语法webpack不能处理,这时就需要第三方的loader即babel来帮助webpack来处理这些高级的语法

入门babel,我们需要了解些什么

说实话,我从工作开始就一直在接触babel,然而对于babel并没有一个清晰的认识,只知道babel是用于编译javascript,让开发者能使用超前的ES6+语法进行开发。自己配置babel的时候,总是遇到很多困惑,下面我就以babel@7为例

Babel是什么?

Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情

深入类和继承内部原理+Babel和 TypeScript 之间转换

在 JavaScript 中,没有基本类型,创建的所有东西都是对象。例如,创建一个新字符串,与其他语言不同,在 JavaScript 中,字符串或数字的声明会自动创建一个封装值的对象,并提供不同的方法,甚至可以在基本类型上执行这些方法。

babel环境安装与编译

babel:将浏览器不支持的ES6语法转为javascript,初始化package.json文件:描述当前项目信息,包括依赖等,创建配置文件,告诉babel用什么规则来编译文件.babelrc

Babel 7 转码的正确姿势

Babel 转码的配置是每位前端童鞋在日常工作中都会遇到的。刚开始我也是在网上搜索各种配置方法,升级到 Babel 7 的时候又折腾了一把,所以决定把自己的心得和理解记录下来,希望能帮助到有需要的童鞋。

babel polyfill 的一些理解

为了支持业务中少量的es6+的高级特性,最近在研究了一下babel的垫片,现将此整理为文字,如下。简单来讲,babel解决语法层面的问题。用于将ES6+的高级语法转为ES5。

babel是怎样工作的

第一步可以说是是编译器的基本功能,通过解析器将原始代码转换成抽象语法树(AST),顾名思义就是描述语法的数据结构,一般在这一步编译器都会做两件事:语法分析与语义分析。语法分析是去定义原始代码中的内容是否应该被认为一个单位,然后是语义分析

babel-preset-env:一个帮你配置babel的preset

babel-preset-env 一个帮你配置babel的preset,根据配置的目标环境自动采用需要的babel插件。babel-preset-env 功能类似 babel-preset-latest,优点是它会根据目标环境选择不支持的新特性来转译

babel的初步了解

由于现在前端出现了很多非es5的语法,如jsx,.vue,ts等等的格式和写法。babel其实是一个解释器,它主要讲进行中的代码分为三个阶段执行:解释,转换,生成。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!