regenerator-runtime npm 包有什么用?

flo*_*w24 11 javascript node.js

我在我公司的代码库中注意到了它,它每周有 3000 万次下载,所以我很好奇它的重要性。

T.J*_*der 25

regenerator-runtime是对编译/转译async函数的运行时支持。(它可能还有其他用途,但这是主要用途。)

当你使用像 Babel 这样的编译器将现代 JavaScript 编译成早期的 JavaScript(这个过程有时被称为transpiling)时,你可以做的一async件事就是将函数编译成可以在不支持async函数的JavaScript 引擎上运行的东西(例如越来越不相关的 IE11)。Babel 进行语法转换,但生成的代码依赖于regenerator-runtime.

  • 既然它如此重要,为什么它没有被包含在 babel 中呢? (11认同)
  • @ezio - Babel 无法控制您在页面/应用程序中包含哪些“脚本”文件,这不是它的工作;它的工作是将代码从 A 转换为 B。但是配置为与 Babel 一起使用的捆绑器(如 Webpack 或 Rollup 等)将自动包含运行时支持,因为这就是它的工作。 (2认同)
  • @TJCrowder 请原谅我的无知,对于 js 生态系统来说是新手,但是这里的运行时支持意味着什么? (2认同)
  • @ezio - 无需道歉,这里有很多移动部件。:-) 包括运行时环境中的脚本。Babel 将 `async` 函数代码重写为使用 `regenerator-runtime` 的代码(在任何出现 `async` 函数的代码文件中),但 `regenerator-runtime` 本身只需要包含一次,而不是每个文件。因此,您可以将其(如果需要)包含在结果页面的“script”标记中。 (2认同)