美文网首页程序员
送你一把钥匙,让你掀开ES6的神秘面纱

送你一把钥匙,让你掀开ES6的神秘面纱

作者: 一码一故事 | 来源:发表于2018-10-12 23:06 被阅读0次

ES6实践

JavaScript已经是互联网开发的第一大语言,而且正在变成一种全领域的语言,著名的程序员Jeff Atwood说过:“所有可以用JavaScript编写的程序,最终都会出现JavaScript的版本”。

ES6是历史上最大的一次版本升级,即使是熟练的JavaScript程序员,也需要重新学习。JavaScript的学习,可以阅读阮一峰的专栏,写的非常好,专栏地址如下:

http://es6.ruanyifeng.com/

ES6本质上是一种语法糖,ES6写的代码,大部分都可以转换成ES5的代码。同一份代码,提供ES6、ES5的两个版本,做一下比较,会帮助我们理解ES6的本质。

本文介绍一下ES6转换成ES5的方法,当自己读到某段ES6代码,想了解一下其里面的实现原理的话,将其转换成ES5,对比阅读是最好的方法。

1、安装Node

https://nodejs.org/zh-cn/

2、安装Webstorm

http://www.jetbrains.com/webstorm/

3、安装es-checker

es-checker是阮一峰写的一个模块,可以检查当前运行环境对ES6的支持度。

npm install -g es-checker
es-checker

4、创建测试工程【ES6Test】

打开Webstorm,新建一个空的工程【ES6Test】

5、安装babel插件

babel插件,可以将es6的代码转换成es5,我们可以借此窥视es6的实际实现逻辑

注意:执行下面的命令时,需要把CMD命令行工具的当前目录设置为【ES6Test】下面

npm install --save-dev babel-preset-latest
npm install --save-dev babel-preset-react
npm install --save-dev babel-preset-stage-2
npm install --global babel-cli

6、在ES6Test工程下,添加.babelrc

.babelrc是babel插件的配置文件

{
  "presets": [
    "latest",
    "react",
    "stage-2"
  ],
  "plugins": []
}

7、修改package.json

在进行第5步的时候,系统会系统生成package.json,该文件的作用,先不用理会,我们现在只需要把下面的内容添加到该文件中.

"scripts": {
    "build": "babel src -d lib"
  },

8、新建src目录

9、在src目录,新建ES6Test.js

我们在该文件中编写ES6的代码

10、将ES6的代码转换成ES5

npm run build

执行上面的语句后,我们的工程下面会生成一个lib目录,理解就存放了转换好的ES5的代码

11、测试效果

  • ES6代码
class Persion {
    constructor(name) {
        this.name = name;
    }

    sayName() {
        console.log(this.name);
    }
}

const p = new Persion('张三');
p.sayName();

  • 转换后的ES5代码
'use strict';

var _createClass = function () {
    function defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
            var descriptor = props[i];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor) descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
        }
    }

    return function (Constructor, protoProps, staticProps) {
        if (protoProps) defineProperties(Constructor.prototype, protoProps);
        if (staticProps) defineProperties(Constructor, staticProps);
        return Constructor;
    };
}();

function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
    }
}

var Persion = function () {
    function Persion(name) {
        _classCallCheck(this, Persion);

        this.name = name;
    }

    _createClass(Persion, [{
        key: 'sayName',
        value: function sayName() {
            console.log(this.name);
        }
    }]);

    return Persion;
}();

var p = new Persion('张三');
p.sayName();

通过这种方法,我们可以很轻易的了解ES6的底层实现逻辑

相关文章

  • 送你一把钥匙,让你掀开ES6的神秘面纱

    ES6实践 JavaScript已经是互联网开发的第一大语言,而且正在变成一种全领域的语言,著名的程序员Jeff ...

  • 掀开神秘面纱

    宇宙奥秘系列第一卷 行星中的“巨无霸”第二章 朱诺号的发现第一篇 掀开神秘面纱 遥远的木星蕴藏着许多不为人知秘密。...

  • 又是一年秋风起

    台风“巴威”这几天着实火了一把,占据了朋友圈半壁江山,可惜美人的神秘面纱轻易没有掀开,幸好它没有掀开,否则就会从...

  • 神奇的钥匙

    神奇的钥匙 我有一把神奇的钥匙 能打开欢乐的门 让你不再烦恼 这把神奇的钥匙我已复制 送你一把 你可乐意 这把神奇...

  • 【大理篇】出发!我们去云南

    说起云南,似乎总是覆有一层神秘的面纱,让人忍不住想接近、想掀开神秘的面纱去一探究竟。 开始的开始 我对云南的执着,...

  • 掀开书册阅读的神秘面纱

    在打开吴欣歆和许艳老师主编的《书册阅读教学现场》这本书的时候,我才真正了解整本书的阅读,正在悄然地改变着我们当前语...

  • 掀开笔墨神秘的面纱

    ——兼谈何为“经典” 1. 人们常常说:岁月恒久远,经典永流传。 ...

  • 掀开你的神秘面纱——鸭绿江断桥游

    辽宁丹东之旅的第二天清晨,我们再次来到驱车来到神往已久的鸭绿江畔。江水滔滔,在6月的骄阳下泛着粼粼的波纹,微风带来...

  • 轻轻掀开李商隐诗谜的神秘面纱

    翻开唐诗,最动人的要数李商隐的情诗。初读他的诗总觉得隐约迷离、晦涩难懂,似有难言之隐。诗的背后究竟藏着什么秘...

  • 当掀开这个神秘圣诞的面纱

    汽车缓缓驶入罗兹郊外的一个小村落,黑暗中透露着昏黄的一座小别墅,一顿超正式的晚餐,像个孩子一样在圣诞树下拆开充满惊...

网友评论

    本文标题:送你一把钥匙,让你掀开ES6的神秘面纱

    本文链接:https://www.haomeiwen.com/subject/uhenaftx.html