npm 包 regenerator-transform 使用教程

在前端开发中,我们常常需要使用 ES6 及以上版本的 JavaScript 语法特性,如箭头函数、解构赋值等等,然而这些新特性未必能够被所有浏览器所支持。幸好,有许多技术可以帮助我们在所有浏览器上面实现这些新特性,其中一个就是通过使用 babel 这个工具将 ES6 + 转化为 ES5 代码,再在浏览器中运行。而这个工具中一个基础的库就是 regenerator-transform

本文将带领大家学习如何使用 regenerator-transform 包,帮助你更好地理解 JavaScript 语言编译到低版本的原理。我们会首先了解什么是 regenerator-transform,然后学习如何安装并配置它。最后,我们会结合一个实际的例子,演示如何使用它来提供更好的兼容性。

什么是 regenerator-transform?

regenerator-transform 是一个用于在代码转换过程中生成 ES6 + 代码的工具。它主要通过将代码转换为 ES6 生成器 的语法结构,来使得 JavaScript 运行时能够支持异步函数等高级语言特性。

regenerator 将用途广泛的 Generator 函数和新的 yield 语句引入到标准的 ES6 语法中,在 JavaScript 运行时中通过事件轮询等机制,使得函数的执行、中断和恢复实现了非阻塞式异步代码,并支持自动的迭代器生成。

在现代的 JavaScript 应用编写中,很多框架或库内部的代码也大量使用了类似的语法特性,regenerator 的主要工作就是将这些代码输出成基于 Promise 或者基于回调的 ES5 代码,从而可以在较低版本的浏览器中得到兼容性保证。

安装和配置

在开始使用 regenerator-transform 之前,你需要根据你的应用场景,决定如何安装和配置这个工具。

安装

使用 npm 安装:

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

配置

接下来,你需要在项目中使用例如下面这个 babel.config.json 配置文件,启用 regenerator-transform

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

这里,我们使用了 @babel 生态下的 preset-env ,指定我们的代码需要被编译成 IE11 及以上版本的可执行语法,并将代码中需要支持的 polyfill 包含进去,解决一些语法上的兼容问题。同时使用 plugin-transform-runtime 插件,告知编译过程中需要使用 regenerator-transform 作为支撑工具,同时提供了一些 polyfill,例如 Promise 的实现等。

使用

现在我们已经可以愉快的使用 regenerator-transform 开发代码了,在这里,我们使用其中的 async/await 语法举例:

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

正常情况下这段代码的 Translation before transform(Babel 把 JS 代码转换成部分 AST 的状态)是这样:

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

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

Babel 转换过后设定 targets 为 chrome 50 时,上述代码被编译成以下样子:

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

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

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

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

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

这里的 regeneratorRuntime 库是 regenerator-transform 的运行时库,需要安装并在代码中引入。

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

注意:如果你直接使用 @babel/preset-env 进行 polyfill 的引入,因为 babel 已经内置了 regenerator-runtime,这个库包已经被默认引入,你并不需要再额外的引入 runtime 。

到此,我们已经完成了 regenerator-transform 的配置和使用,并且了解了一些新特性如何被编译成可以在低版本的浏览器上运行的 JavaScript 的技术细节。

总结

regenerator-transform 包在前端开发中应用广泛,为我们的代码提供了非阻塞式异步代码实现,以及许多其他的语法上的新特性。安装和配置过程简单明了,并且它的应用也很容易,我们只需要使用 ES6 的语法即可享受其带来的兼容改进。同时我们也不能过度依赖这个工具,而忽视新特性背后的实现原理,这是浏览器无法兼容的本质原因,只有理解了本质,才能避免兼容性问题的出现。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/40472


猜你喜欢

  • npm 包 scope-analyzer 使用教程

    在现代的前端工程中,使用 npm 包管理工具已经成为了不可或缺的一环。对于大型项目来说,可能会包含数百甚至数千个 npm 包。这时候,如何对这些包的使用情况进行统计和分析就变得尤为重要。

    6 年前
  • npm 包 static-module 使用教程

    前言 在前端开发过程中, 我们常常会有一种需求, 就是需要在代码中根据不同条件来输出不同的结果。这时候, 我们需要用到静态模块 (Static Module) 来完成这个需求。

    6 年前
  • npm 包 brfs 使用教程

    npm 包 brfs 使用教程 简介 brfs 是一个 Node.js 模块,提供了在代码中内联引入文件的能力,便于前端开发中 bundle 代码,使用 brfs ,可以极大的方便开发者在使用 Bro...

    6 年前
  • npm 包 umd 使用教程

    前言 在前端开发过程中,我们经常会用到各种第三方库和框架以提高开发效率和降低开发难度。而这些库和框架通常是通过 npm 包的方式来安装和使用的。但是,如果想要在浏览器端直接使用这些库和框架,就需要使用...

    6 年前
  • npm 包 inline-source-map 使用教程

    在前端开发过程中,调试非常重要。通常情况下,我们使用开发者工具从浏览器中获取 JavaScript 报错的位置。然而,当代码经过处理并压缩后,行列信息会被移除,因此找到报错位置就变得非常困难。

    6 年前
  • npm 包 `combine-source-map` 使用教程

    前端开发中,我们经常需要使用一些 JS 工具库和框架来减少开发工作量和提高开发效率。而 npm 就是一个常用的 JS 包管理器,它可以方便地管理我们所需要的各种工具库和框架。

    6 年前
  • npm 包 parse-base64vlq-mappings 使用教程

    在前端领域中,调试工具是必不可少的工具之一,而调试工具中往往少不了对源代码映射的支持。parse-base64vlq-mappings 是一个 npm 包,用于处理 JavaScript 中的 sou...

    6 年前
  • npm 包 browser-pack 使用教程

    开发现代 web 应用的过程中,我们有时候需要将多个脚本文件打包成一个单独的 JavaScript 文件,以提高网站性能和用户体验。这时候,一个很好用的工具就是 npm 包 browser-pack。

    6 年前
  • npm 包 subarg 使用教程

    在前端开发中,我们经常需要获取命令行参数来处理一些逻辑。而在 Node.js 环境下,可以使用 process.argv 来获取命令行参数。但是,这种方式获取的参数非常的原始,需要自己手动处理才能使用...

    6 年前
  • npm 包 stream-combiner2 使用教程

    在前端开发过程中,处理数据流是一项非常重要的任务。在应用程序中,我们经常需要将多个数据源进行组合,然后将结果传递给下一个步骤。npm 包 stream-combiner2 给予我们了这个能力,可以帮助...

    6 年前
  • npm 包 module-deps 使用教程

    在前端开发中,使用模块化的思想可以使代码更易于维护、复用和协作。而使用 npm 包管理工具可以让我们更方便地使用各种 JavaScript 库和框架来构建项目。 在实际开发中,我们经常需要将不同的模块...

    6 年前
  • Npm包 fileset的使用教程

    npm是node.js的一个包管理器,现在已成为前端中不可或缺的工具之一。其中,一个十分有用的npm包是fileset。通过fileset,我们可以轻松地对文件进行查找、筛选等操作。

    6 年前
  • npm 包 patr 使用教程

    概述 patr 是一款 JavaScript 库,用于解决通配符匹配的问题。它能够帮助我们在开发过程中更加便捷地匹配字符串,从而提高效率。 安装 首先,我们需要在本地安装 patr。

    6 年前
  • npm 包 promised-io 使用教程

    在前端开发中,使用异步处理数据是非常常见的需求。而 promised-io 是一个非常实用的 npm 包,可以帮助我们更加便捷地实现异步编程。本篇文章主要介绍 promised-io 的使用教程。

    6 年前
  • npm 包 ibrik 使用教程

    什么是 ibrik? Ibrik 是一个非常强大的语言翻译包,可以帮助开发人员将应用程序快速翻译成多种语言。它使用一个文件来保存应用程序的所有翻译文本,并提供了一些方便的方法来访问和使用这些文本。

    6 年前
  • npm 包 mocks 使用教程

    介绍 在前端开发中,我们经常需要前后端并行开发,为了避免后端接口还未完成的情况下前端无法进行开发,我们通常会使用一些 mock 工具来模拟后端接口返回的数据,此时 mocks 是一个非常优秀的 npm...

    6 年前
  • npm包 Karam-coverage的使用教程

    在进行前端开发时,我们经常需要进行单元测试,以确保代码的正确性与可靠性。其中一个必要的工具就是代码覆盖率度量工具,而karma-coverage就是一款优秀的npm包,可以帮助我们实现方便的单元测试与...

    6 年前
  • npm 包 `mr` 使用教程

    前置知识 在学习 mr 包之前,我们需要先了解以下几个概念: 包管理工具 npm:Node.js 包管理工具,用于安装和管理 Node.js 包; 构建工具 webpack:前端项目构建工具,可以将...

    6 年前
  • npm 包 asap 使用教程

    简介 asap 是一个 npm 包,是一个可用于 Node.js 和浏览器中的工具函数,提供了高效的微任务调度方式。它使用的是一个优化的事件循环,它采用样板代码来尽可能快地调用传递的函数。

    6 年前
  • npm 包 promise 使用教程

    在现代的前端开发中,异步编程是必不可少的一部分,而 promise 就是用于解决异步编程的一种编程模型。在 JavaScript 中,通过使用 npm 包 promise 可以更加方便地使用 prom...

    6 年前

相关推荐

    暂无文章