ES6摘录,学无止境,温故知新。有益之处,欢迎点赞收藏,有错之处,请多多指正!

1.Babel转码器

可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。

//转码前
input.map(item => item + 1);//转码后
input.map(function(item){return item + 1;
});

安装Babel

npm install --save-dev @babel/core

2.配置文件.balbelrc

Babel 的配置文件是.babelrc,存放在项目的根目录下。

用来设置转码规则和插件,格式如下:

{"presets":[],"plugins":[]
}

presets设置转码规则

//最新转码规则
npm install --save-dev @babel/preset-env//react转码规则
npm install --save-dev @babel/preset-react

将这些规则加入.babelrc

{"presets":["@babel/env","@babel/preset-react"],"plugins":[]
}

敲重点:以下所有Babel工具和模块的使用,都必须先写好.babelrc

3.命令行转码

Babel提供命令行工具@babel/cli,用于命令行转码。

npm install --save-dev @babel/cli

基本用法:

//转码结果输出到标准输出
npx babel example.js//转码结果写入一个文件
//--out-file或-o参数指定输出文件
npx babel example.js --out-file compiled.js
或者
npx babel example.js -o compiled.js//整个目录转码
//--out-dir 或 -d参数指定输出目录
npx babel src --out-dir lib
或者
npx babel src -d lib//-s参数生成source map文件
npx babel src -d lib -s

4.babel-node

@babel/node模块的babel-node命令,提供一个支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。

安装:

npm install --save-dev @babel/node

然后,执行babel-node就进入REPL环境。

npx babel-node
>(x => x*2)(1)
2

babel-node命令可以直接运行 ES6 脚本。将上面的代码放入脚本文件es6.js,然后直接运行

//es6.js的代码
//console.log((x => x*2)(1));
npx babel-node es6.js
2

5.@babel/register 模块

@babel/register模块改写require命令,为它加上一个钩子。此后,每当使用

require加载.js、.jsx、.es和.es6后缀名的文件,就会先用Babel进行转码

npm install --save-dev @babel/register

使用时,必须首先加载@babel/register.

//index.js
require('@babel/register');
require('./es6.js');

然后,就不需要手动对index.js转码了.

node index.js
2

注意:@babel/register只会对require命令加载的文件转码,而不会对当前文件转码。另外,由于它是实时转码,所以只适合在开发环境使用。

6.polyfill

Babel默认只转换新的js句法(syntax),而不转换新的API,比如Iterator、GeneratorSetMapProxyReflectSymbolPromise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。

举例来说,ES6 在Array对象上新增了Array.from方法。Babel 就不会转码这个方法。如果想让这个方法运行,可以使用core-jsregenerator-runtime(后者提供generator函数的转码),为当前环境提供一个垫片。

安装命令如下:

npm install --save-dev core-js regenerator-runtime

然后,在脚本头部,加入如下两行代码

import 'core-js';
import 'regenerator-runtime/runtime';
//或者
require('core-js');
require('regenerator-runtime/runtime');

7.浏览器环境

Babel也可以用于浏览器环境,使用@babel/standlone模块提供的浏览器版本,将其插入网页。

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
// Your ES6 code
</script>

注意:网页实时将 ES6 代码转为 ES5,对性能会有影响。生产环境需要加载已经转码完成的脚本。

Babel 提供一个REPL 在线编译器,可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。

阮一峰ES6旅程:入门布局相关推荐

  1. js -- ES6(一)-- 简介(根据阮一峰ES6标准入门整理)

    目前正在学习ES6,根据阮一峰的ES6入门2,学到哪更新到哪里,都是基本的知识,复杂的目前还不会,涉及的代码都是亲自运行过的,若发现错误请指正. ES6 提供了许多新特性,但是并不是所有的浏览器都能够 ...

  2. 阮一峰ES6入门读书笔记(十六):Moudle

    阮一峰ES6入门读书笔记(十六):Moudle 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上 ...

  3. 阮一峰ES6入门读书笔记(七):运算符的拓展

    阮一峰ES6入门读书笔记(七):运算符的拓展 1. 指数运算符 ES6新增了一个指数运算符(**). 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合. ...

  4. [转]阮一峰:蒙特卡罗方法入门

    ametor 阮一峰:蒙特卡罗方法入门 发表于2016/4/24 10:26:54  84人阅读 分类: 算法 作者: 阮一峰 日期: 2015年7月27日 本文通过五个例子,介绍蒙特卡罗方法(Mon ...

  5. 阮一峰es6电子书_ES6理解进阶【大前端高薪训练营】

    一:面向对象:类class 面向对象三大特性之封装 封装是面向对象的重要原则,它在代码中的体现主要是以下两点: 封装整体:把对象的属性和行为封装为一个整体,其中内部成员可以分为静态成员(也叫类成员)和 ...

  6. 读阮一峰的React 入门实例教程有感

    读阮一峰的React 入门实例教程有感 阮一峰的React入门实例教程其实我在一年前就读过,当时就想学习React,其实那个时候刚刚jQuery入门,啥也不懂,看得云里雾里,所以后来就没有继续研究下去 ...

  7. 阮一峰 / ES6 数组的解构赋值

    目录 一.定义 二.详情讲解 1.数组解构:数组解构时数组的元素是按次序排列的,变量的取值由它的位置决定 2.对象解构:对象解构时对象的属性没有次序,变量必须与属性同名,才能取到正确的值. 三.用途 ...

  8. 实现阮一峰ES6的顶部加载条效果

    效果例子 阮一峰的ES6:http://es6.ruanyifeng.com/?search=s&x=13&y=3 html + css <style type="te ...

  9. 【ES6】阮一峰ES6学习(四) 对象的扩展

    对象的扩展 1. 属性的简洁表示法 ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; ...

  10. 【ES6】阮一峰ES6学习之迭代器和for...of循环

    迭代器和for...of循环 1. 迭代器 1. 概念 2. 工作原理 3. 默认 Iterator 接口 4. 调用 Iterator 接口的场合 (1)解构赋值 (2) 扩展运算符 (3) yie ...

最新文章

  1. C#开发教程初级-第一天-hello Word 控制台编程
  2. matlab 某些函数
  3. 云计算自动化对于虚拟化环境意味着什么?
  4. c++ explicit 修饰构造函数
  5. mysql strtolower_GitHub - redfoxli/mysqlstr: a php extension provide string processing of mysql
  6. 大数相加c语言思路,大数相加
  7. [WinForm] VS2010发布、打包安装程序(超全超详细)
  8. OPENSSL 的深入理解
  9. 调试技术: Linux core dump file
  10. 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)
  11. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...
  12. java hl7_HL7中文完整版及代码实例
  13. 区块链行业缺乏统一标准,成为金融新基建尚存距离
  14. 【金钱开道】直捣黄龙!
  15. Whitelabel Error Page问题解决方案
  16. 《泰囧》票房奇迹:极简主义的胜利
  17. #ifdef __cplusplus 是什么意思?
  18. 晨星评选的2020年获奖基金怎么样?
  19. 桥牌坐庄训练bm2000 level3闯关记录——A2
  20. 江西财经职业学院计算机应用技术代号,江西财经职业学院计算机协会第三届PPT创意大赛...

热门文章

  1. Java网络编程——UDP编程
  2. djangobook的旧版本代码,关于数据库
  3. 中国风歌曲介绍及推荐
  4. Linux 编译 python3.7
  5. cloudMusic.mps的前世今坑
  6. 有关i386和i686
  7. AD10利用SMART PDF打印PCB文件(供华龙焊板子参考)
  8. 常数除以0的极限是什么_【高数总结求极限方法】百度作业帮
  9. 女士品茶 | The Lady Tasting Tea | 统计学史
  10. Android 的singleTask和singleInstance的一点思考