什么是@babel/插件转换类?

4ioopgfo  于 2022-12-08  发布在  Babel
关注(0)|答案(1)|浏览(180)

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

我不知道什么是@babel/plugin-transform-classes,所以我在网上搜索,似乎babel是一个JavaScript compiler和@babel/插件转换类是一个plugin
但不知还是安装了编译器和插件,为什么会出现这样的问题?

mwg9r5ms

mwg9r5ms1#

简短回答

  • 一个Babel插件修复一些Javascript错误旧版浏览器
  • 不能自己修复这个错误,至少如果你使用WordPress或任何框架的话。

长答案

巴别塔是什么
Babel is a JavaScript compiler,框架使用它来使代码对于较旧浏览器是可理解的。

什么是@babel/插件转换类

这就是a babel plugin,它包含在@babel/preset-env中。
确实如此

  • 使用SuperClass.apply(/* ... */)传输类,但本机类是不可调用的,因此在这种情况下抛出。
  • 一些内置函数(如Array)总是返回一个新的对象,Babel应该将其视为新的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,因此您必须等待它们迁移。
所以你可以放心地忽略这个问题。

相关问题