[转] 梦里Babel知多少(一)

平时开发中,经常需要用到ES6/ES7的语法。那么就需要用到Babel来对代码进行转码处理。 
之前用Vue比较多,所以以Vue-cli作为参考来分析。 

第一张图是几个月前的Vue-cli生成的 
第二个图是今天使用Vue-cli生成的

Babel-core

顾名思义,这是 babel 的核心代码,但是在我们构建的时候不会直接调用 babel-core 。它是一个标准库,通常服务于各种 polyfill 等库,比如 babel-runtimebabel-plugin-transform-runtimebabel-polyfill 等。

Babel-loader

通常在我们使用webpack的时候,我们会先安装 babel-loader来作为加载器。

babel-preset-env 稍后介绍

cnpm i babel-loader babel-core babel-preset-env -D

这样在webpack中,可以这样

module exprots = {
    entry: __dirname + ‘/main.js‘,
    output: {
        path: __dirname + ‘/public‘,
        filename: ‘bundle.js‘
    },
    module: {
        rules: [
            {
                test: /(\.jsx|\.js)$/,
                use: {
                    loader: ‘babel-loader‘,
                    options: {
                        presets: [‘env‘]
                    }
                },
                exclude: /node_module/
            }
        ]
    }
}

Babel-preset-es2015

之前的都是介绍的 babel-core babel-loader 并不能转码,而当我们想使用ES6语法时候就需要用到 babel-preset-es2015 
这个包可以对 es2015 代码进行转码为ES5语法。当然如果使用了ES7语法,即async await 等语法,还是不能够支持的。 
安装:

cnpm i babel-preset-es2015 -D

在使用webpack构建工具时,我们通常不会在webpack.config.js里直接对 babel 进行配置。而是在根目录下创建一个 .babelrc.js 的文件。

/* webpack.config.js */

module exprots = {
    entry: __dirname + ‘/main.js‘,
    output: {
        path: __dirname + ‘/public‘,
        filename: ‘bundle.js‘
    },
    module: {
        rules: [
            {
                test: /(\.jsx|\.js)$/,
                use: {
                    loader: ‘babel-loader‘
                },
                exclude: /node_module/
            }
        ]
    }
}
/* .babelrc.js */
{
    "presets": ["es2015"]
}

需要特别注意的是, babel-preset-es2015 虽然可以对ES6转码,但是它只会对ES6的语法进行转码,并不会对API进行转码。也就是说它可以对箭头函数,promise转码,但不会对Array.from,Array.find等转码。 
所以为了能够使用ES6的API,我们还需要进行更深入的配置。

Babel-plugin-transform-runtime

安装:

cnpm i babel-plugin-transform-runtime -D

使用:

/* .babelrc */
{
    "presets": ["es2015"],
    "plugins": ["transform-runtime"]
}

这样就可以自由使用promise了。 
但是这个方案有一些特点

特点:官方建议在 lib 上使用,因为该方案没有全局变量和 prototype 污染。 
1,因为相当于是在沙箱操作,没有在全局对象中声明变量。 
2,正是因为没有 prototype 污染,所以对于一些内置类型扩展的方法是没办法 polyfill 的。比如: Array.prototype.find Array.prototype.filter 等。但是可以对静态方法进行 polyfill。 
优点: 可以按需引用。

Babel-polyfill

正是因为 babel-polyfill 的特点,让开发者通常使用 babel-polyfill 进行开发。

安装:

cnpm i babel-polyfill -D

使用:

/* main.js(入口文件) */
import ‘babel-polyfill‘

这样就OK啦,在使用 babel-polyfill 后,就不需要引入 babel-plugin-transform-runtime 了,并且它在浏览器支持Promise时使用 原生的promise,如果不支持才会使用polyfill

但是最大的缺点就是不能按需引用,文件比较大。

原文地址:https://www.cnblogs.com/chris-oil/p/9419528.html

时间: 2024-11-05 10:27:02

[转] 梦里Babel知多少(一)的相关文章

梦里的幸福

昨夜做了个梦 而感受却那么真实 混淆了梦和现实,, "如果没有梦想 何必远方" 梦里,妈妈脸上洋溢着幸福,把我的长发盘起,编的大麻花辫儿有豌豆公主的金黄,妹妹为我整理衣服 精致闪烁的服饰照亮了整个房间,暖暖的温度, 醒来,静静的走在一段小路上,我不经意间回想起这个梦,依旧暖暖,我明白了 我的幸福 不仅仅是我自己的幸福 也是属于妈妈的 也是属于妹妹的,,这就是世界上最亲的人之间流在血液里的爱,.虽然是梦 但我也是多获得了一种幸福的,在梦里的时候,醒来回味的时候,因为最爱的人的爱. &qu

你的梦里有背景音乐吗?

昨天,我做了一个奇怪的梦,哪奇怪了呢?奇怪就奇怪在梦里竟然有背景音乐! 好吧,我不得不佩服自己了,片子看太多,连梦境里也不忘为自己“导演”的故事加上配乐. 不过,这事儿倒是激起我的好奇心了,经过一番搜索,我发现,原来,许多人都有过这样的经历. 对于“你的梦里有背景音乐吗?”这个问题,以下先把一些网友的回答奉上: “我昨晚的梦里有,音乐是Squeeze的‘Black Coffee in Bed’.我梦到了我的前女友,你们可以想象一下,lol.” “我的梦里一直都有!尤其是在打斗场景里.我昨晚的梦里

海子——梦里的太阳,火里的诗

3月26日 我叫查海生,我的死与任何人无关. 1964年3月24日,一个叫査海生的婴孩在安徽怀宁县降生. 1979年,一个15岁的男孩考入了北京大学法律系. 1982年,他开始写诗. 1985年,一首<亚洲铜>让他开始成名. 1989年,7年间,他已经创作里200万字的作品. 1989年3月26日,一个叫海子的年轻人在山海关卧轨. 一个属于诗歌的年代,开始地灿烂辉煌,却结束地匆忙. 今日是2020年3月26日,时间,不知不觉,已经过去了30多年. 但是远方的诗,却一直,在我们身旁,在我们的耳边

红楼梦里宝玉与六个女孩有特殊关系,从名字就看得出来

在红楼梦中,因为宝玉含玉出生,玉在贾府变得传奇而神圣.也许是曹公有意,给红楼梦中的一些女孩子起名时也特意用了玉字,也许是想牵引出她们此生和宝玉的交集和联系. 林黛玉 提起宝玉不得不说的人就是黛玉,因为黛玉是宝玉此生的挚爱,黛玉和宝玉的爱情美好而单纯,看到他们便让人充满了对爱情的憧憬.看着他们就想到了天荒地老和岁月静好,也一直很期盼可以看到他们喜结连理,曹公未完的红楼梦正好让我们可以幻想一个美好的结局. 黛玉和宝玉是青梅竹马,他们从懵懂到明白爱情的真谛,最好的岁月都是对方陪自己度过,黛玉生不仅是宝

突然想起哆啦A梦里的某一首诗

<哆啦A梦>长篇<宇宙开拓>主题曲<放松心情>作词:武田铁矢    我终于发现,/昨日失去的一切,/虽然还无法完全意会,/可是对我却非常重要./加紧脚步追赶,/但是昨日已经远去,/伸长手臂追寻,/如今已随风飘逝./放松心情!/放松心情!/追忆也是甜美的!/放松心情!/放松心情!/请别轻言放弃./放松心情!/放松心情!/回到昨日去!/放松心情!/放松心情!/明日正等着你. 找了有点久.

梦里花落 暗换流年

1.       年华·初见 少年时,花开四季彷徨 我打马而行,轻叹岁月牵强 你低眉凝眸,细数流年轻唱 闪烁的光影未央 斑驳在你的刘海之上 映射出一抹明媚忧伤 你说逆风的方向 也许更适合飞翔 2.    断章·离乱 那一场邂逅的怦然心动 那一段由此的烈烈轰轰 繁华的背后,似是流年的无穷 谁料此生仿若三月落红 看得见开始繁荣 看不见结局倥偬 还未许你天荒地老 独留一袭青冢无言向晚红 3 .    弦断·落幕 乱花飞舞,随风沉浮 找不到命运的归宿 你身影恍惚,再也回不到年华如初 一段段征程的无言落幕

油菜花黄,梦里依稀几缕香

一阵风儿拂过脸颊,轻柔飘过,似乎闻到一股在城市里少有的宜人的气味,就是那种混合着春天田野潮湿泥土的气息和淡淡花香的味道,淡淡的,鲜鲜的.搭眼望去,远方的田野,朦胧着一片模糊的黄,此刻,那黄在晕染着我的心房. http://www.0577top.com/Article/2015/20154/2015416151336_102078.htmlhttp://www.0577top.com/Article/2015/20154/2015416151333_102071.htmlhttp://www.0

梦里寻她千百度,Bug却在隔壁老张处

程序员与 Bug 是一对矛盾的存在,程序员既要在解决 Bug 中获得成就感,同时也讨厌 Bug 本身的存在."程序不息,Bug 不止",程序员在与 Bug 的斗争中,也有很多有趣的事情发生,我们整理了一些程序员在调试 Bug 时的种种传奇经历. 众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处: @ 网友条件状语从句 说: 写 JS,自己手机没电了,拿同事老张的安卓机调试,很简单的获取用户微信昵称,结果死活获取不到,一直显示为 null.应该是跨平台问题,因为之前在自己 iPhone

红楼梦里王夫人为何让玉钏儿吃双份儿工资?有一个不能说的秘密

王夫人是贾府的当家主母,她所有行为都不是无意义的,她突然间把玉钏儿的月钱提升到二两银子,这是一个很敏感的数字,因为姨娘们的月钱也是这个数.王夫人这样做到底是什么意思呢? 王夫人听了,又想一想,道:"也罢,这个分例只管关了来,不用补人,就把这一两银子给他妹妹玉钏儿罢.他姐姐伏侍了我一场,没个好结果,剩下他妹妹跟着我,吃个双分子也不为过逾了."--王夫人问道:"正要问你,如今赵姨娘周姨娘的月例多少?"凤姐道:"那是定例,每人二两.赵姨娘有环兄弟的二两,共是四两