2016-07-05 55 views
0

我的src/index.js文件包含一个类:你如何使用Babel Compiled classes inline?

export default class Test { 
    constructor() { 
    this._name = 'Test'; 
    } 
} 

通天然后它编译成ES5文件。 在我的index.html文件,我想有这样的:

<script src="lib/library.js" type="text/babel"></script> 

随后是:

<script type="text/javascript"> 
     var test = new Test(); 
</script> 

不过,我得到 '测试' 没有定义。我如何在我的index.html中使用es5内联js,其中该类是在babel编译文件中导出的?

谢谢。

回答

2

ES6模块按设计不会污染全局状态及其内部定义,这也意味着您不能在没有明确导入它们的情况下访问导出。

一个解决方案,让您的类访问全球范围内将是这样明确:

class Test { 
    constructor() { 
    this._name = 'Test'; 
    } 
} 

window.Test = Test 

现在,你应该能够在任何地方实例化你的类代码。

0

默认情况下,babel会将该类转换为仅在Common JS环境中可用的模块。

尽管将模块转换为UMD,但您可以使用this babel plugin,该模块将在您的<script>标记中设置一个可访问的全局变量。