如何在不安装Babel本身的情况下直接从脚本标记使用Babel

我正在使用cdnjs.com中介绍的所有这些库编写RESPECT。但是,我发现它报告错误:"未捕获TypeError:无法读取未定义的属性"key"",即使我没有编写一行javascript代码也是如此。

怎么会发生这种情况?

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.min.js"></script>
<script text="text/babel">
//some code here

</script>

解决方案

在浏览器中包含巴别塔实际上不是它应该的工作方式。

Babel是一个构建工具-它应该只是构建过程的一部分。最常见的是,您可以使用像webpack或Browserify这样的捆绑器,它们可以使用Babel将您的代码从ES6转换到ES5(或其他目标版本)。

Here您可以看到将Babel包含到生成过程中的所有不同方式。

这样,所有处理都在您的计算机/服务器上进行,并且您不需要在客户端中包含Babel,因为它将只接收它可以理解的转换后的代码。

但是,可以使用babel-standalone在浏览器中直接转换代码。您可以在此处看到它的工作方式:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.7.7/babel.min.js"></script>
<script text="text/babel">
  var input = 'const getMessage = () => "Hello World";';
  var output = Babel.transform(input, {
    presets: ['es2015']
  }).code;
  console.log(output);
</script>

但是,您几乎不需要使用此方法。

相关文章