什么是@babel/plugin-transform-classes?

What is @babel/plugin-transform-classes?

我 运行 Google 我网站上的 PageSpeed Insights,它报告了一个问题“避免向现代浏览器提供旧版 JavaScript”,如下所示:

我不知道什么是@babel/plugin-transform-classes,所以我在网上搜索了一下,好像babel是一个JavaScript compiler and @babel/plugin-transform-classes is a plugin

但是我不知道或者没有安装编译器和插件,为什么会出现这样的问题?

简答

  • 一个 babel 插件 修复 一些 Javascript 错误 旧版浏览器
  • 无法自行修复此错误,至少在您使用 Wordpress 或任何框架时不能。

长答案

什么是 babel

Babel is a JavaScript compiler 框架使用它来使旧版浏览器可以理解代码。

什么是@babel/plugin-transform-classes

这是a babel plugin,包含在@babel/preset-env

确实如此

  • Transpiles classes using SuperClass.apply(/* ... */), but native classes aren't callable and thus throw in this case.
  • Some built-in functions (like Array) always return a new object. Instead of returning it, Babel should treat it as the new this.

class Test {
  constructor(name) {
    this.name = name;
  }

  logger() {
    console.log("Hello", this.name);
  }
}

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

var Test = (function() {
  function Test(name) {
    _classCallCheck(this, Test);

    this.name = name;
  }

  Test.prototype.logger = function logger() {
    console.log("Hello", this.name);
  };

  return Test;
})();

我可以自己解决这个问题吗?

不,因为很多库仍在使用 babel,您必须等待他们继续使用。

所以你可以安全地忽略这个问题。