尝试在ES6中使用Class关键字和模块

4

我在一本书中找到了这段代码:

class Animal(){
    constructor(){
        this.legs = 4;
        this.eyes = 2;
        this.say = "Huh?"
     }
     speak(){
         console.log(this.say)
     }
}

以上应该是定义一个类的正确方式,但我无法在Firefox或Chrome中使用这种方法。我收到了SyntaxError: class is a reserved identifier的错误提示。

另外,我正在尝试使用模块。我在一个名为firstModule.js的文件中添加了export let hello = "hello from the first module",然后我添加了:

import {hello} from "firstModule"
console.log(hello)

在main.js文件中,我在index文件中加入了<script type="text/javascript" src="main.js"></script>,结果出现了SyntaxError: modules are not implemented yet的错误。

我想我可能是在使用es6语法时遇到了问题,尽管我使用了babeljs。

我希望你能看一下这个babel的“试一试”链接,我尝试使用class语句,但出现了错误Unexpected token (1:15)

我该如何使用es6的内容呢?我以为babel应该将es6转换为es5,我做错了什么吗?

我还在html文件中加入了<script type="application/javascript;version=1.7">


1
你是否真的在使用babeljs将ES6代码转译为ES5代码,然后在浏览器中运行ES5代码?还是你试图直接在浏览器中运行ES6代码?你提到了两者 - 你想做哪一个? - jfriend00
1
这里是Mozilla在实现class语法方面的进展情况(https://bugzilla.mozilla.org/show_bug.cgi?id=837314),以及Chrome的进展情况(https://code.google.com/p/v8/issues/detail?id=3330)。 - Sebastian Simon
我试图使用ES6代码并将其输出到浏览器。我正在研究为什么它不起作用,听说bablejs可以将ES6转换为Es5代码,以便我可以在浏览器中进行测试。OKM在下面说,我在问题的类部分遇到的困难是因为我放了括号。我从bable网站获取了es5代码。但是,如果我在编辑器中删除括号,它仍然无法工作。所以我想我应该复制并粘贴它。 - jack blank
“output it to the browser” 是什么意思?顺便说一下,“Babel”是指巴别塔。 - user663031
1个回答

1
应该使用 class Animal 而不是 class Animal()
如果要在浏览器中使用 ES6 代码,而该浏览器不支持你所使用的代码,你需要使用 Babel 将其转换为 ES5。例如,在浏览器中
<script type="text/babel" src="main.js"></script>

为了玩转模块,你可以尝试使用babel-node,或者使用webpack打包js文件并在浏览器中加载结果。

我不确定 "transpile" 是什么意思。但如果我想使用 ES6,我可以创建 JS 文件并安装 BabelJS,然后在 Windows 的命令提示符中输入一些代码,它会将 JS 文件转换为 ES5,然后我会将其上传到服务器。如果是这种情况,我想最好的方法是使用 https://babeljs.io/docs/usage/cli/ 上的某种方法.. 那个页面上的 "output to stdout." 是什么意思?babel script.js 是我要输入的命令来转换文件吗?抱歉,我是个新手。 - jack blank
@user2537537 是的,这是其中一种方法。通过使用 babel script.js > build/script.js,您可以在 build/script.js 中获得适用于浏览器的 ES5 代码。通常,人们会使用一些构建系统,例如 gulpwebpack 来帮助调用 babel 并构建打包后的 JS,以便更适合发布。请参见 https://babeljs.io/docs/setup/ 中的方法。 - okm
标准输出(stdout)是计算机程序中的一个术语,用于描述程序将输出发送到标准输出流的过程。标准输出通常是指屏幕或控制台窗口,但也可以重定向到文件或其他设备。在Unix和类Unix系统中,标准输出通常表示为文件描述符1。 - JamesCarters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接