es6开发环境搭建

一、开发环境实现方案

浏览器不支持es6语法,但是支持低版本的js语法,实现思路就是将高版本的es6语法转换成低版本的js语法,而这个过程需要babel插件支持,我们先来了解一下babel。

二、babel介绍

Babel 是一个 JavaScript 编译器,主要用于将高版本的js代码转换为向后兼容的js语法。举个如下转换的例子:

//转换前
var sum = (num1, num2) => num1 + num2;

//转换后
"use strict";

var sum = function sum(num1, num2) {
  return num1 + num2;
};

转换前代码是一个箭头函数,浏览器支持的不是很好,转换后的代码是常见的函数形式,浏览器可以识别。

三、CDN方式搭建es6开发环境

在html中引入babel的CDN文件即可使用,参考如下案例:

<html>
<body>
<div id="output"></div>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">

    const getMessage = () => "Hello World ~~";
    document.getElementById('output').innerHTML = getMessage();

</script> 
<body>
</html>

以上代码中包含了es6的箭头函数和常量定义等语法,然后将函数的结果输出到页面上,在IE,Chrome等浏览器均能正常运行。

四、node.js方式搭建es6开发环境

注意:这里要求对node.js有一定的了解
1、在开发文件夹下执行npm init -y初始化文件夹

npm init -y  //初始化文件夹

2、安装babel

npm install --save-dev @babel/core @babel/cli @babel/preset-env
npm install --save @babel/polyfill

3、新建需要存放待转码的文件夹和文件,例如创建src文件夹和index.js文件

//index.js文件内容
let sum = (num1, num2) => num1 + num2;

4、编译es6代码

//执行编译命令
npx babel src --out-dir lib --presets=@babel/env

5、查看转化后的代码效果如下所示:

"use strict";

var sum = function sum(num1, num2) {
  return num1 + num2;
};

五、babel插件和预设的介绍

插件:插件是小型的 JavaScript 程序,只能完成对部分功能的代码进行转换,举个例子如下:

//转换前的代码
let sum = (num1, num2) => num1 + num2

//执行转换的命令
npx babel src --out-dir lib --plugins=@babel/plugin-transform-arrow-functions

//转换后的效果代码
let sum = function (num1, num2) {
  return num1 + num2;
};

可以看到转换后的代码只有一部分es6代码完成了编译,想要完成所有功能完成转换怎么办呢?那就是预设的作用了

预设:是一组预先设定的插件,使用的时候不需要一个接一个地添加所有需要的插件,是插件的功能集合,举个案例说明:

npx babel src --out-dir lib --presets=@babel/env

这里--presets=@babel/env表示代码编译用@babel/env预设,作用是支持所有最新的 JavaScript (ES2015、ES2016 等)特性,用途广泛。效果在前面node开发环境演示。

六、babel配置文件介绍

前面我们编译es6语法的时候,指定babel命令的参数是通过命令行的方式,如果命令参数需要指定的比较多的时候,不够灵活,babel本身支持配置文件的方式配置参数,这也是诸如VUE等各大框架中使用的方式。举例如下:

//在开发文件夹下创建配置文件,名称为.babelrc,内容如下:
{
  "presets": [
     [
        "@babel/env",
        {
          targets: {
            ie: "9",
            firefox: "50",
            chrome: "47",
            safari: "11.1",
          },
        },
     ],
  ]
}
//编译es6语法方式改为:npx babel src --out-dir lib

配置文件中presets表示预设,当前使用的预设是@babel/env,targets表示当前需要支持的浏览器版本

七、简化编译命令

编辑开发文件夹下的package.json文件,在scripts属性中添加一条编译命令如下:

"scripts": {
    "build": "npx babel src --out-dir lib --presets=@babel/env"
  },

//编译es6的命令简化为如下方式:
npm run build

八、CDN方式搭建es6开发环境补充

引入CDN的方式存在一些隐形的问题,比如说babel文件更新,会和自己以前的代码不兼容。我们这里可以使用babel-standalone的开源npm的babel包达到相同的目标。
1、下载babel-standalone的npm包

npm i babel-standalone

2、把下载下来的npm包下的js代码考到自己的开发文件下,包括babel.js文件和src包目录
3、在页面代码中引入babel.js文件,如下所示:

<html>
<body>
<div id="output"></div>
<script src="./babel.js"></script>
<script type="text/babel">

    const getMessage = () => "Hello World ~~";
    document.getElementById('output').innerHTML = getMessage();

</script> 
<body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 由于有些低版本的浏览器还不支持ES6的语法,所以在不使用框架的情况下,需要将ES6语法转换为ES5语法下面我在VS...
    喵呜Yuri阅读 224评论 0 1
  • 第一步:建立工程目录: 先建立一个工程目录,并在目录下建立两个文件夹:是src和distsrc:写es6的文件夹,...
    9979eb0cd854阅读 447评论 1 6
  • babel官网 babel 介绍 Babel 是一个通用的多用途 JavaScript 编译器。通过 Babel ...
    锋享前端阅读 1,815评论 0 10
  • babel官网 babel 介绍 Babel 是一个通用的多用途 JavaScript 编译器。通过 Babel ...
    不得不爱XIN阅读 1,124评论 0 9
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,285评论 4 31