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

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