如何在ie11中使用browser.js解决es6类问题

How to use browser.js to solve es6 class issue in IE 11

本文关键字:解决 js es6 问题 browser ie11      更新时间:2023-09-26

我正在使用javascript类,并在IE 11中遇到了SCRIPT1002问题,IE无法解释es6中可用的"class"关键字。我一直在阅读使用巴别塔是解决这个不幸问题的一种方法。然而,我有问题理解如何正确地做到这一点。下面是我的代码。我需要添加什么来允许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>

类导致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();
    }
}

不要尝试在ie中运行babel。它会非常慢。使用编译器工具链(babel)创建离线构建过程,并提供编译后的文件。的确,所有现代浏览器都理解class关键字,但除非您必须支持至少一种不理解class关键字的浏览器,否则您必须进行编译。babel编译器是一个复杂的javascript程序,我相信你不希望在你的web应用程序中包含额外的数百kb的js代码。离线编译才是正确的选择。

你可能想知道为什么babel能够在浏览器中做到这一点:它是为了支持一些开发人员的工作流程而创建的,但现在它基本上是不必要的,因为浏览器实现了大多数es6规范和一些esnext规范,如async/await。

这个线程应该帮助你开始:当我使用babel时,我需要require js吗?