Babel7 中关于插件的新增和变更

阅读时长 8 分钟读完

Babel 是一个 JavaScript 编译器,可以将新版本的 JavaScript 代码转换成可以在旧版浏览器中运行的代码。Babel7 是最新版本的 Babel,相比 Babel6,它在插件方面有了一些新增和变更。本文将详细介绍这些变化,并提供示例代码和指导意义。

新增的插件

@babel/plugin-transform-runtime

这个插件可以将代码中的 regeneratorRuntime 替换成 @babel/runtime,从而避免在使用 async/await 时出现的重复代码。使用该插件需要先安装 @babel/runtime

示例:

转换前:

-- -------------------- ---- -------
---- --------

--- -------- - -----------------------------------------

--- ------- - -------- -- -
  --- ---- - ------------------ --------------------------------------------- --------- -
    ------ -------------------------------- ------------------ -
      ----- --- -
        ------ -------------- - -------------- -
          ---- --
            ------------- - --
            ------ ----------------------- ---------

          ---- --
          ---- ------
            ------ ----------------
        -
      -
    -- ---------
  ----

  ------ -------- --------- -
    ------ ---------------- -----------
  --
----

----------
展开代码

转换后:

-- -------------------- ---- -------
---- --------

--- ---------------------- - --------------------------------------------------------

---------------------------------------

------------------------------------------------

--- -------- - ------------------------------------------------------------------

--- ------- - -------- -- -
  --- ---- - ------------------ --------------------------------------------- --------- -
    ------ -------------------------------- ------------------ -
      ----- --- -
        ------ -------------- - -------------- -
          ---- --
            ------------- - --
            ------ -------------------------------- ---------

          ---- --
          ---- ------
            ------ ----------------
        -
      -
    -- ---------
  ----

  ------ -------- --------- -
    ------ ---------------- -----------
  --
----

----------
展开代码

@babel/plugin-proposal-class-properties

这个插件可以让我们在类中使用类属性,例如:

转换前:

转换后:

@babel/plugin-proposal-private-methods

这个插件可以让我们在类中使用私有方法,例如:

-- -------------------- ---- -------
----- ------- -
  ------------------ -
    ----------------- -- - ------- ----------
  -

  ---------------- -
    ------------------------
  -
-
展开代码

转换前:

-- -------------------- ---- -------
---- --------

----- ------- -
  ------------- -
    -------------------- - -------- -- -
      ----------------- -- - ------- ----------
    --
  -

  ---------------- -
    -----------------------
  -

-
展开代码

转换后:

-- -------------------- ---- -------
---- --------

----- ------- -
  ------------- -
    -------------------------- -------- -- -
      ----------------- -- - ------- ----------
    ---

    --------------------------- -
      --------- -----
      ------ -------- ------- -
        ------ --------------------------- ------------------
      -
    ---
  -

  ---------------- -
    --------------------------- ------------------------------
  -

-

--- ---------------- - --- ----------

--- ----------------- - --- ----------
展开代码

变更的插件

@babel/plugin-transform-destructuring

这个插件在 Babel6 中默认开启,但在 Babel7 中被移除。它的功能是将对象和数组的解构转换成普通的赋值语句。

转换前:

转换后:

推荐使用 @babel/plugin-proposal-object-rest-spread@babel/plugin-proposal-decorators 来替代该插件。

@babel/plugin-syntax-dynamic-import

这个插件在 Babel6 中默认开启,但在 Babel7 中被移除。它的功能是让 Babel 能够识别动态导入语法。

推荐使用 @babel/plugin-syntax-import-meta 来替代该插件。

总结

Babel7 中新增了一些插件,例如 @babel/plugin-transform-runtime@babel/plugin-proposal-class-properties@babel/plugin-proposal-private-methods,它们可以让我们在代码中使用更多的语法特性。同时,Babel7 也移除了一些插件,例如 @babel/plugin-transform-destructuring@babel/plugin-syntax-dynamic-import,推荐使用其他插件来替代它们。我们可以根据项目需要选择合适的插件来使用,并在使用时注意版本兼容性。

示例代码和更多信息可以在 Babel 官方网站上找到:https://babeljs.io/docs/en/plugins/

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c99139add4f0e0ff361fbf

纠错
反馈

纠错反馈