![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=1739141812-8TliJO5IQIukuQ5yyW886hsugoBEUFjH-0-d159a67eac7b43972f0622ff711fe5c9)
以上代码中一共有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=1739141812-paXrP6zJWWr39wLQ9IPpqgSqL7NaTiv2-0-0772e7d373e64030e6bd0340cd2ce82a)
正常情况下,执行以上代码会在控制台打印出9。
如果想对Traceur的行为进行精确控制,可以采用以下的参数配置写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/41_1.jpg?sign=1739141812-gyTYMD4EOwwvrGWIB7sXuLk3HkoZe72p-0-2b02c3841426ea91d6d08b346e4a65ee)
以上代码首先生成 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=1739141812-UbX7PTVu2o6thzxInMQ9wxaf6I0Tj0fd-0-c7a6a398e5a30b2f6f2b66a8c0c42ecb)
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_1.jpg?sign=1739141812-YJapP5CLNa9S6I5jN6hy7RqpG5lTWLg0-0-79efd9df803025e433250095bef4df21)
1.7.3 命令行转换
作为命令行工具使用时,Traceur是一个Node模块,需要先用Npm安装。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_2.jpg?sign=1739141812-Ptg5cySf4VdAEKduLuCJ5Oj6Cb7qWic4-0-a1b4dbff0238c72c5cb905acf85a76e2)
安装成功即可在命令行下使用。
Traceur直接运行ES6脚本文件,会在标准输出中显示运行结果(以前面的calc.js为例)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_3.jpg?sign=1739141812-3Iz0Iom0blSO2i1Ocra9G7COsOdTnlE6-0-c89590b094275135fdaf1801b9eaf8fd)
如果要将ES6脚本转为ES5代码保存,可采用下面的写法。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/42_4.jpg?sign=1739141812-n3mvrx9A2IAq5UV2FXgTOzVCCVH0QT0V-0-58bf06302929ccb65531d62f94449e8c)
其中的--script选项表示指定输入文件,--out选项表示指定输出文件。
为了防止有些特性编译不成功,最好加上--experimental选项。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_1.jpg?sign=1739141812-fvLHxTViOsY9IUqvxXKZI2QazbdHWV2u-0-fa07cb7ee3e99dfabba4797aeb1c6780)
转换得到的文件就可以放到浏览器中运行了。
1.7.4 Node环境的用法
Traceur的Node用法如下(假定已安装traceur模块)。
![](https://epubservercos.yuewen.com/F720A1/26763854109471806/epubprivate/OEBPS/Images/43_2.jpg?sign=1739141812-PUrz0tbN5TtKPRIzU9oQZNfzMNupOynw-0-ed98de8e1eb2e8fd0b94d7158db5f788)