如何使用browser.js解决IE 11中的es6类问题

时间:2016-10-11 22:53:15

标签: javascript internet-explorer-11 babeljs es6-class

我正在使用javascript类并在IE 11中遇到了SCRIPT1002问题,其中IE无法解释'类' es6中提供的关键字。我一直在读,使用babel是解决这个不幸问题的一种方法。但是,我在理解如何正确执行此操作时遇到问题。下面是我的代码。我需要添加什么才能让IE 11正确解释js类?

标题包括babel.js(正在正确加载browser.js)

<!-- babel -->
<script type="text/babel" src="<?php echo  $GLOBALS["COMMON_ROOT"]; ?>/scripts/babel-5.8.29/browser.js"></script>

在javascript文件中输入SCRIPT 1002错误的类

class assessmentAnswer {
    constructor(answerID, questionID, answerText, imagePath) {
      this._answerID = answerID;
      this._questionID = questionID;
      this._answerText = answerText;
      this._imagePath = imagePath;
    }

    getAnswerID(){
        return this._answerID;
    }

    getQuestionID(){
        return this._questionID;
    }

    getAnswerText(){
        return this._answerText;
    }

    getImagePath(){
        return this._imagePath;
    }

    getAll(){
        return this.getAnswerID()+","+this.getQuestionID()+","+this.getAnswerText()+","+this.getImagePath();
    }
}

此代码在Firefox中运行良好。

1 个答案:

答案 0 :(得分:1)

甚至不要试图在ie中运行babel。它会非常慢。使用编译器工具链(babel)创建脱机构建过程,并为编译后的文件提供服务。确实,所有现代浏览器都理解class关键字,但在您必须支持至少一个不支持的浏览器之前,您必须进行编译。 babel编译器是一个复杂的javascript程序,我相信你不希望在你的web应用程序中包含额外的数百KB的js代码。离线编译是可行的方法。

你可能想知道为什么甚至babel能够在浏览器中做到这一点:它是为了支持一些开发人员的工作流而创建的,但是现在它几乎没有必要,因为浏览器实现了大部分es6规范和一些esnext规范,如async / await太

这样的主题应该可以帮助您入门:Do I need require js when I use babel?