![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=1739292223-wt7kHXE2AAj5FERlmPOSqen2m2dE1Xoe-0-56c703f79d03cb12d8168f67e6a03b13)
以上代码中一共有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=1739292223-iDaIIJ9JFrfTmkC2Unbr1lyCKw5mZvxc-0-7f8457182c8dc9d30bcc96c2cc8cba64)
正常情况下,执行以上代码会在控制台打印出9。
如果想对Traceur的行为进行精确控制,可以采用以下的参数配置写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/41_1.jpg?sign=1739292223-vDz6RkEuR63D05t2FTrWA6Rt2fwGS0x7-0-dca9c6683b69e6c168598b16d801b228)
以上代码首先生成 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=1739292223-qa7X6ViEXeGR1ccvMmAakfvubKDXVlDs-0-43ce0afa86d6bcb0ef084679780861d3)
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_1.jpg?sign=1739292223-l3opjulbYaxHKCTVBRqmXYWFmIMOwci3-0-4c288be087be60f525ad87c038602266)
1.7.3 命令行转换
作为命令行工具使用时,Traceur是一个Node模块,需要先用Npm安装。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_2.jpg?sign=1739292223-QnAVaUHS3eX8FY1k2dqbPgnQZtHrgjie-0-b444cbf8f807a1bedf13b22627f50151)
安装成功即可在命令行下使用。
Traceur直接运行ES6脚本文件,会在标准输出中显示运行结果(以前面的calc.js为例)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_3.jpg?sign=1739292223-ltdvsM2FirqV9Ru4gFM7TMF7qvOUA581-0-9410ca6c9181a5a0835e6ac0ca474682)
如果要将ES6脚本转为ES5代码保存,可采用下面的写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_4.jpg?sign=1739292223-kXWP1PIpzGCbi4pF5dgz01B80Gs70qqq-0-be567c90862eeaa9f78d4d9ecd403bb4)
其中的--script选项表示指定输入文件,--out选项表示指定输出文件。
为了防止有些特性编译不成功,最好加上--experimental选项。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_1.jpg?sign=1739292223-KH37m5UtjzaRtRYjZ2esZeuF52pJxKkM-0-2b6a9152ba269f9019ec90873d68b47f)
转换得到的文件就可以放到浏览器中运行了。
1.7.4 Node环境的用法
Traceur的Node用法如下(假定已安装traceur模块)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_2.jpg?sign=1739292223-0l8p7wNIYgsS18eGMFoFfuaqOaQ8luWe-0-06ff91e05b4aa09cac3ba8e12b9f29f1)