2014-10-05 160 views
8

我正在使用ES6 modules转储到ES5与traceur
Transpilation通过咕噜做+ grunt-traceurJavaScript ES6模块+ traceur

Traceur允许您选择要使用的模块处理程序:它自己的,AMD,CommonJS的或内联。
我已经尝试了大部分,但似乎没有工作。为什么?

TestClass.js

export default class TestClass { 
    constructor() { 
     alert('test'); 
    } 
} 

Main.js

import TestClass from './TestClass'; 

var test = new TestClass(); 

Gruntfile.js(提取物)

traceur: { 
    options: { 
     experimental: true, 
     blockBinding: true, 
     modules: 'amd' 
    } 
} 

的index.html(摘录)

<script src="js/vendor/traceur-runtime.js"></script> 
<script src="js/vendor/require.js"></script> 

<script defer async src="js/compiled/Main.js"></script> 

错误给出

Uncaught Error: Mismatched anonymous define() module: function ($__0) {

似乎there are issues与繁重的插件,但即使使用的是旧版本,似乎并没有帮助。

代码改编自an article

+0

您可能还想看看[6to5](http://6to5.github.io/)。它有很多不同格式的[模块格式器](http://6to5.github.io/modules.html),可以很好地与其他工具配合使用。 – 2014-12-05 03:03:20

回答

4

看来,我有very similar problem(并试图找到解决方案一试谷歌)。

我没有看到你提供的错误,无论如何发布在这里我的实施,也许它可以帮助你。

首先,您需要加载两个js脚本与treceur运行时。就像这样:

<script src="js/vendor/traceur-runtime.js"></script> 
<script defer async src="js/compiled/TestClass.js" type="module"></script> 
<script defer async src="js/compiled/Main.js" type="module"></script> 

请注意,您必须指定脚本是在type属性module -s。

比你要加载初始化模块:

<script> 
    System.get('public_js/init'); 
    // pass your init module name as a parameter 
    // you can see it in private __moduleName variable in compiled init.js 
</script> 

这implemetation很适合我的。我使用0.2.9版本的grunt-traceur和0.0.72版本的treceur运行时。希望这可以帮助你。

+0

谢谢我有同样的问题,如果grunt-traceur允许你列出应该立即运行的文件,而不是假定为延迟加载的模块,那就好了。 – 2015-01-28 21:22:41