ES6第一篇 ES6简介 和转码器等介绍

ES6 | (一)ES6 新特性(上) | 尚硅谷Web前端ES6教程 ES6新特性关键语法存档。 阅读详情

一、什么是ES6?ES6和ES2015的关系?ECMAScript和JavaScript的关系?

JavaScript的创造者是Netscape公司,后将JavaScript提交给标准化组织ECMA,希望这种语言能够成为国际标准,ECMA规定的浏览器脚本语言标准就称之为ECMAScript,,该标准一开始就是针对JavaScript 语言制定的,之所以不叫JavaScript,有两个原因。一是商标,根据授权协议,只有Netscape公司可以使用JavaSciipt 这个名字,且JavaScript本身也已经被Netscape公司注册为商标了。二是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。

ES6(ECMAScrpit 6.0)是一个泛指,是指ECMAScript 5.1版以后的JavaScript的下一代标准,包括ECMA2015(ECMA标准化组织2015年6月发布的版本)、ECMA2016(ECMA标准化组织2016年6月发布的版本)、ECMA2017(ECMA标准化组织2017年6月发布的版本)等等。


二、Babel转码器

Babel是一个广泛使用的ES6转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。


三、配置文件.babelrc

Babel 的配置文件是 .babelrc ,存放在项目的根目录下。使用 Babel 的第一步,就是配置这个文件。

该文件用来设置转码规则和插件,基本格式如下。

{
     "preset": [],
     "plugins": []
}
presets 字段设定转码规则,官方提供以下的规则集,可根据需要再安装。

# 最新转码规则
$ npm install --save-dev babel-preset-latest

# react 转码规则
$ npm install --save-dev babel-preset-react

# 不同阶段语法提案的转码规则(共有4个阶段),选装一个
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3


然后将这些规则加入 .babelrc。

  {
    "presets": [
      "latest",
      "react",
      "stage-2"
    ],
    "plugins": []
  }
  需要注意的是,以下所有 Babel  工具和模块的使用,都必须先写好 .babelrc 。

3.1 命令行转码 babel-cli

其安装命令如下:

$ npm install --global babel-cli

基本用法如下:

# 转码结果输出到标准输出
$ babel example.js

# 转码结果写入一个文件
# --out-file 或 -o 参数指定输出文件
$ babel example.js --out-file compiled.js
# 或者
$ babel example.js -o compiled.js

# 整个目录转码
# --out-dir 或 -d 参数指定输出目录
$ babel src --out-dir lib
# 或者
$ babel src -d lib

# -s 参数生成source map文件
$ babel src -d lib -s

上面的代码是在全局环境下,进行Babel转码。如果项目要运行,全局环境必须有 Babel ,也就是说项目产生了对环境的依赖。但这样做不能够支持不同项目使用不同版本的 Babel 。

不过可以将 babel-cli 安装在项目之中

# 安装
$ npm install --save-dev babel-cli

然后改写 package.json .

{
  // ...
  "devDependencies": {
    "babel-cli": "^6.0.0"
  },
  "scripts": {
    "build": "babel src -d lib"
  },
}

转码的时候,就进行下面的命令;

$ npm run build


3.2 babel-node

babel-cli 工具自带一个 babel-node 命令,提供一个支持 ES6 的 REPL(交互执行,交互式解释器) 环境。 它支持 Node 的 REPL 环境的所有功能,而且可以直接运行 ES6 代码。它不用安装,而是随着 babel-cli 一起安装。然后执行 babel-node 就进入 REPL 环境

 

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

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

$ babel-node es6.js
2


babel-node 也可以安装在项目中。

$ npm install --save-dev babel-cli

然后改写package.json 

{
  "scripts": {
    "script-name": "babel-node script.js"
  }
}

上面代码中,使用 babel-node 替代 node,这样script.js本身就不用做任何代码处理

3.3 babel-register

babel-register 模块改写 require 命令,为它加上一个钩子。此后每当使用require加载.js、.jsx、.es和.es6后缀名的文件,就会先用 Babel 进行转码

$ npm install --save-dev babel-register


使用时,必须首先加载 babel-register

require("babel-register");
require("./index.js");


这样就不需要手动对 index.js 转码了。

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

3.4 babel-core

如果某些代码需要使用 Babel 的 API 进行转码,就要使用 babel-core 模块。

安装命令如下:

$ npm install babel-core --save

再在项目中就可以调用 babel-core

var babel = require('babel-core');

// 字符串转码
babel.transform('code();', options);
// => { code, map, ast }

// 文件转码(异步)
babel.transformFile('filename.js', options, function(err, result) {
  result; // => { code, map, ast }
});

// 文件转码(同步)
babel.transformFileSync('filename.js', options);
// => { code, map, ast }

// Babel AST转码
babel.transformFromAst(ast, code, options);
// => { code, map, ast }

配置对象options,可以参看官方文档http://babeljs.io/docs/usage/options/。

下面是一个例子。

var es6Code = 'let x = n => n + 1';
var es5Code = require('babel-core')
  .transform(es6Code, {
    presets: ['latest']
  })
  .code;
// '"use strict";\n\nvar x = function x(n) {\n  return n + 1;\n};'
 

上面代码中,transform方法的第一个参数是一个字符串,表示需要被转换的ES6代码,第二个参数是转换的配置对象

3.5  babel-polyfill

Babel 默认只转换新的 JavaScript句法(syntax),而不转换新的API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如object.assign)都不会转码。

举例说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想要让这个方法运行,就必须使用babel-polyfill,为当前环境提供一个垫片而。

安装命令如下:

$ npm install --save babel-polyfill

再在脚本头部,加入如下一行代码:

import 'babel-polyfill';
// 或者
require('babel-polyfill');

Babel默认的不转码的API非常多,详细清单可以查看babel-plugin-transform-runtime模块的definitions.js文件。

在线转换

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


四、Traceur 

Google 公司的Traceur转码器,也可以将 ES6 转码为 ES5代码。

4.1 直接插入网页

Traceur 允许将ES6 代码直接插入网页。首先需在网页头部加载 TRaceur 库文件

<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script type="module">
  import './Greeter.js';
</script>

上面代码中,第一个script标签是加载Traceur 的库文件,第二个和第三个是将这个库文件用于浏览器环境,第四个是加载用户脚本,这个脚本中可以使用 ES6 代码。

注意:第四个script标签的type属性的值是module,而不是text/javascript 。这是Traceur 编辑器识别 ES6代码的标志,编辑器会自动将所有type=module的代码编译为 ES5,r然后再交给浏览器执行。

除了引用外部的 ES6 脚本,也可以直接在网页中放置 ES6 代码。

<script type="module">
  class Calc {
    constructor() {
      console.log('Calc constructor');
    }
    add(a, b) {
      return a + b;
    }
  }

  var c = new Calc();
  console.log(c.add(4,5));
</script>


如果还想对 Traceur 的行为有精确控制,可以采用下面参数配置的写法。

<script>
  // Create the System object
  window.System = new traceur.runtime.BrowserTraceurLoader();
  // Set some experimental options
  var metadata = {
    traceurOptions: {
      experimental: true,
      properTailCalls: true,
      symbols: true,
      arrayComprehension: true,
      asyncFunctions: true,
      asyncGenerators: exponentiation,
      forOn: true,
      generatorComprehension: true
    }
  };
  // Load your module
  System.import('./myModule.js', {metadata: metadata}).catch(function(ex) {
    console.error('Import failed', ex.stack || ex);
  });
</script>


上面代码中,首先生成 Traceur 的全局对象 window.System,然后System.import方法可以用来加载 ES6。加载的时候,需要传入一个配置对象metadata,该对象的traceurOptions属性可以配置支持 ES6 功能。如果设为experimental:true,就表示除了 ES6以外,还支持一次阿实验性的新功能。

在线转换

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

命令行转换

作为命令行工具使用时,Traceur是一个Node 的模块

$ npm install -g traceur
Traceur 直接运行 ES6 脚本文件,会在标准输出显示运行结果,以前面的calc.js为例


$ traceur calc.js
Calc constructor
9
如果要将 ES6 脚本转为 ES5保存,要采用下面的写法。

$ traceur --script calc.es6.js --out calc.es5.js
上面的代码的--script选项表示指定输入文件,--out选项表示指定输出文件。

为防止有些特性编译不成功,最好加上--experimental选项。

$ traceur --script calc.es6.js --out calc.es5.js --experimental

命令行下转换生成的文件,就可以直接放到浏览器中运行。


Node 环境的用法

Traceur 的 Node 用法如下(假定已安装traceur模块)。

var traceur = require('traceur');
var fs = require('fs');

// 将 ES6 脚本转为字符串
var contents = fs.readFileSync('es6-file.js').toString();

var result = traceur.compile(contents, {
  filename: 'es6-file.js',
  sourceMap: true,
  // 其他设置
  modules: 'commonjs'
});

if (result.error)
  throw result.error;

// result 对象的 js 属性就是转换后的 ES5 代码
fs.writeFileSync('out.js', result.js);
// sourceMap 属性对应 map 文件
fs.writeFileSync('out.js.map', result.sourceMap);


  注:本文是参考阮一峰的ECMAScript 6入门编写,希望对你有帮助。

【微信小程序 | 实战开发】实现ES6转ES5开关 Babel是一个 ES6 转码器,能将 ES6 代码转为 ES5 代码,这样原本不支持ES6的老版本浏览器执行ES6代码 阅读详情

相关推荐

西门子S7-1200控制伺服/步进电机方法与接线(全)

西门子S7-1200控制伺服/步进电机方法与接线(全) 伺服/步进电机在非标自动化控制中十分常用,但作者发现在各类开源网站上很少有人做西门子1200PLC控制伺服/步进电机的教程,于是今天想着跟大家分享一下。 本文共分为一下几个四个内容。 文章目录西门子S7-1200控制伺服/步进电机方法与接线(全)前言一、准备二、接线1.PLC接线:2.伺服接线:3. 步进电机的接线:三、代码组态代码四、可能出现的问题 前言 工程控制常用到三项异步电机、直流电机等,但他们都无法准确的控制电机角度;于是有了步进电机、

weixin_46060068的博客 7万+

ES6(JS)

ES6(JS)笔记

Yes_You_Can 的博客 1万+

归因分析计算因子贡献度常见的方法

在归因分析中,我们一般都需要计算出每个因子的贡献度是多少,比如产品DAU上升,对年龄段维度进行拆解,看是不同年龄段的用户对DAU上升的贡献度是多少,一般根据指标的类型,计算贡献度的方法也不一样,下面就列出一些常见的归因分析贡献度的计算方法。

Hubans的博客 4万+

ES6及JS基础总结

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。它有三种状态,pending(进行中)、fulfilled(已成功)、reject(已失败)。注:resolved是指完成状态,结果可能包含fulfilled和rejected。...

weixin_38984030的博客 2275

BIOS更新后PIN不可用怎么办?从原理到实操的完整修复指南

在计算机维护中,BIOS更新是常见的固件升级操作,但其引发的登录异常却常让用户措手不及。Windows Hello PIN并非传统密码,它通过TPM芯片与设备启动环境(PCR状态)强绑定,一旦主板固件或安全启动配置改变,TPM便会拒绝释放密钥,导致“由于此设备上的更改,你的PIN不再可用”。理解这一原理后,恢复路径清晰可控:优先尝试密码登录,或通过WinRE替换utilman.exe创建临时管理员,必要时还需处理BitLocker恢复密钥。本文面向系统维护与数据安全场景,系统梳理PIN失效的恢复流程与避坑方

weixin_31364787的博客 360

YOLO11,ultralytics-main源代码目录结构详解

本文详细介绍了YOLO11框架的ultralytics-main源代码目录结构,帮助用户更好地理解和使用YOLO模型。主要目录包括:docker文件夹,包含多种Docker镜像文件,适用于不同硬件环境;docs文件夹,存放YOLO的说明文档;examples文件夹,提供YOLO使用的示例代码;tests文件夹,包含单元测试模块;ultralytics文件夹,为核心代码所在,包含推理逻辑、配置、数据处理等模块。其中,engine文件夹负责训练和推理引擎,models文件夹存放模型架构,nn定义神经网络结构

qq_30279827的博客 1282

JavaScript 之 ES6 新特性

模块化 Class类 Symbol 箭头函数 解构赋值 rest参数 set/map let/const 模板字符串 扩展运算符 迭代器/生成器

qq_48439911的博客 2052

5、癌症数据预处理技术与深度学习在癌症预测中的应用

本文详细介绍了癌症数据预处理技术和深度学习在癌症预测中的应用。针对CT扫描图像、X射线图像、超声图像、基因表达数据和文本数据等不同类型的癌症数据,分别阐述了去噪、插值、配准、归一化等预处理技术的具体方法。同时,分析了深度学习在乳腺癌、白血病和宫颈癌预测中的作用,结合相关影响因素探讨了模型的应用潜力。此外,还总结了深度学习在癌症预测中面临的挑战及未来发展方向,为癌症的早期诊断与精准预测提供了理论支持和技术参考。

alice7model的博客 123

JavaScript高级——ES6基础入门

ES6(ECMAScript 6),也被称为ES2015,是JavaScript的第六个版本.它于2015年发布,并在现代JavaScript开发中扮演了重要的角色.看千遍,不如自己动手写一遍遇到问题不要怕,微笑着面对它记笔记。

明哥 1万+

【大语言模型 14】Transformer权重初始化策略:从Xavier到GPT的参数初始化演进之路

权重初始化是深度学习训练成功的隐秘基石,特别是在Transformer这样的深层架构中,合适的初始化策略能够决定模型的训练稳定性和收敛速度。本文从经典的Xavier和He初始化出发,深入解析Transformer特有的初始化策略,通过数学推导、代码实现和实验分析,揭示不同初始化方法对大语言模型训练的深层影响。我们将探讨为什么GPT系列模型采用特定的初始化方案,以及如何针对不同层设计最优的初始化策略。

熵数实验室 1686

飞腾平台(FT2000/4 D2000/8)配置GPIO引脚

飞腾平台配置CPU的引脚为GPIO工作模式的方式有永久型和暂时型: - 永久型是通过UEFI中的MmioWrite32函数来实现的,该方法可以在UEFI阶段就对复用引脚的工作模式配置为GPIO,并且在进入操作系统后仍然不会发生便会; - 临时型是通过rw工具,在系统下手动修改复用引脚的工作模式,该方法在系统重启后会失效,所以是暂时型的。

qq_30135687的博客 5613

ES6-1: ES6的简介以及转码器

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

大家都在努力!你怎能不努力!!! 482

Flow Match 原理 及应用

Flow Matching(流匹配)是生成模型的范式革命——用确定性ODE替代随机扩散过程,在自动驾驶轨迹预测中实现10倍采样加速和更高生成质量。更快的采样速度:通常只需 10-50 步就能生成高质量样本更稳定的训练:避免了传统扩散模型中复杂的噪声调度理论基础:基于连续正规化流(Continuous Normalizing Flows)核心思想:Flow Matching 通过学习一个 向量场(vector field) 来直接建模从噪声分布到目标分布的连续变换路径。

@bangbang的博客 98

ES6系列总结之-1.ES6简介与Babel转码器

你真的了解ES6吗?看完整个ES6你就进步一大半了

qq_39025001的博客 337

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ES6 简介(一)

ECMAScript 6(ES6) 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中绝大多数的特性。ES6经过持续几年的磨砺,它已成为JS。

一个专注于机器学习基础与实战的技术博客,内容涵盖算法推导、模型实现、数学原理与代码实践。用通俗的语言解析复杂概念,记录学习过程中的思考与总结,适合机器学习爱好者和从业者参考。 3935

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ES6入门一:ES6简介及Babel转码器

ES6简介 Babel转码器 Nodejs中使用ES6 WebPack中使用ES6及Babel转码插件 一、ES6简介与转码 1.1一个常见的问题,ECMAScript和JavaScript到底是什么关系? 1996年11月,JavaScript的创造者——Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望JavaScript这...

weixin_30949361的博客 534

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ES6转码器

ES6和ES2017有些语法在浏览器中不支持(如修饰器的使用),使用时浏览器会报异常,这就需要转码器,将ES6或ES2017转为ES5执行。 常用转码器 Babel Traceur umi(阿里),umi集成了Babel。 umi优点 插件化,由大量插件组成,按需加载。 开箱即用,无需安装react,label等。 约定路由,无需手动配置。 umi安装 安装node,验证node正常安装命令:node -v 安装yarn,yarn是优化的npm,tyarn是使用淘宝国内镜像作为源的yarn

quietbxj的博客 518

常见的ES6转码(编译)工具——Babel转码器、Traceur转码器

在浏览器里面如何使用? 现在ES6的使用也是一个新趋势,下面就来讲解转码的常见方法 当ES6不兼容时,需要用到转码工具 1.Babel转码器: Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以用ES6的方式编写程序,又不用担心现有环境是否支持。 // 转码前 input.map(item => item + 1); // 转码后...

hsany330的专栏 1342

ES6—简介

一、概述 概念 ES6全称ECMAScript 6.0,是Javascript语言的下一代标准,2015年6月正式发布。 注意,ES6即是一个历史名词,也是一个泛指,含义是5.1版本之后的下一代Javascript标准,涵盖了ES6、ES7、ES8等。 什么是ECMA ECMA中文名称为欧洲计算机制造商协会,该组织的目的是评估、开发和认可电信和计算机标准,1994年更名为Ecma国际。 ECMAScript和JavaScript是什么关系...

雷雨天的雷胖子 930

ECMAScript 6的转码器

ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境中执行。解决现在环境不支持ES6的问题。本文主要介绍Babel和Traceur转码器。

Amy的学习之路 4048

ES6简介

基本信息 ES6 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。 ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本, 大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。 ECMAScript 的历史 ES6 是 ECM...

注释写满人生 535

es6(1)

es6简介,Babel转码器,let和const,变量的解构赋值,字符串的扩展

BHDDGT的博客 1326

ES6学习(一)— Babel转码器的使用和配置

JavaScript学习(七十)—ES6之 Babel转码器 ** Babel转码器** Babel是一个广泛使用的ES6转码器,可以将ES6代码转化为ES5代码从而在老版本的浏览器进行。 这意味着,你可以使用ES6的方式编写程序,又不用担心现有的环境是否支持 ...

道阻且长,行则将至。 841

ES6新特性之转码器(UmiJS入门)

转码器 Babel (babeljs.io)是一个广为使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而 在浏览器或其他环境执行 。 Google 公司的 Traceur 转码器 Cgithub.com/google/traceur-compiler), 也可 以将 ES6 代码转为ES5的代码。 这2款都是非常优秀的转码工具,在本套课程中并不会直接使用,而是会使用阿里的开...

Leon_Jinhai_Sun的博客 1083
上一篇: css样式遇到问题小总结
下一篇: js基础知识点儿 第一篇 表达式
catchRun
博客等级 码龄9年 3粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值