![ES6标准入门(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/811/47378811/b_47378811.jpg)
1.7 Traceur转码器
Google公司的Traceur转码器(github.com/google/traceur-compiler),也可以将ES6代码转为ES5代码。
1.7.1 直接插入网页
首先,必须在网页头部加载Traceur库文件。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/40_1.jpg?sign=1739192833-APN7KfVh6KQd3is4i3l3EmRsdZPBPqJQ-0-a165dc6596b734bc27718c1f01cdbbdd)
以上代码中一共有4个script标签。第一个用于加载Traceur的库文件,第二个和第三个将这个库文件用于浏览器环境,第四个则用于加载用户脚本,这个脚本中可以使用ES6代码。
注意!
第四个 script 标签的 type 属性值为 module,而不是 text/javascript。这是Traceur编译器识别ES6代码的标志,编译器会自动将所有type=module的代码编译为ES5,然后再交给浏览器执行。
除了引用外部ES6脚本,也可以直接在网页中放置ES6代码。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/40_2.jpg?sign=1739192833-cHLbZMwc7F4JCtc2FJQTAv9D7cP5pAlB-0-7679e0cb6c3cc3ad24b9a469e793f41f)
正常情况下,执行以上代码会在控制台打印出9。
如果想对Traceur的行为进行精确控制,可以采用以下的参数配置写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/41_1.jpg?sign=1739192833-APmcyjNsHRGZuCoo25eUakVL6JSpcdCR-0-433a8166ebf2b1e763dcd4de82291255)
以上代码首先生成 Traceur 的全局对象 window.System,然后可以用 System.import方法来加载ES6。加载时需要传入一个配置对象metadata,该对象的traceurOptions属性经配置可以支持ES6功能。如果设为experimental:true,就表示除ES6以外还支持一些实验性的新功能。
1.7.2 在线转换
Traceur也提供了一个在线编译器,可以在线将ES6 代码转为ES5代码。转换后的代码可以直接作为ES5代码插入网页运行。
将上面的例子转为ES5代码运行,结果如下。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/41_2.jpg?sign=1739192833-tMhCrOnMR0PaKhUydT7OvoAm8RG96t3m-0-fe4250ec6ad75da0830a9c4a3d9ea86f)
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_1.jpg?sign=1739192833-xgHlxpO4MzGPW7VzY6E7i0NARqwhsc1o-0-e69a066911e20aa7483bbfec7f54b942)
1.7.3 命令行转换
作为命令行工具使用时,Traceur是一个Node模块,需要先用Npm安装。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_2.jpg?sign=1739192833-ZF3aoiEPFgBVM2KrMIVnNrxrGhvuCKqS-0-60fc116d0aec4ffadb8d74084ded5508)
安装成功即可在命令行下使用。
Traceur直接运行ES6脚本文件,会在标准输出中显示运行结果(以前面的calc.js为例)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_3.jpg?sign=1739192833-vBLh9323xhSTnEhLvjVQyqhbpp24KekJ-0-b0dc7fd848714b2e461882bc2c996cd4)
如果要将ES6脚本转为ES5代码保存,可采用下面的写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_4.jpg?sign=1739192833-K5xy382eInrLDcdTWNqVGdGJJPVczZ52-0-f4444e729ce2545d5b8ef09197571f1a)
其中的--script选项表示指定输入文件,--out选项表示指定输出文件。
为了防止有些特性编译不成功,最好加上--experimental选项。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_1.jpg?sign=1739192833-PwO0JAXXt0yW8JoOV2bgpqSfMdgGgG4r-0-3c7abdfbf01dec665f505ee84d0c271e)
转换得到的文件就可以放到浏览器中运行了。
1.7.4 Node环境的用法
Traceur的Node用法如下(假定已安装traceur模块)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_2.jpg?sign=1739192833-F5pE3scFoifdLmvVvQfcuRD3VQuvcVOg-0-f3555ce93c2009475e8acee1ed6fa2f0)