使用 Babel 编译 Edge 上运行的 JavaScript 代码的问题解决

在前端开发中,我们经常需要使用一些新的 JavaScript 特性,但是这些特性并不是所有浏览器都支持,这就需要我们使用 Babel 来将代码转换为兼容性更好的 JavaScript 代码。然而,在使用 Babel 编译 Edge 上运行的 JavaScript 代码时,我们可能会遇到一些问题。本文将介绍这些问题以及如何解决它们。

问题一:Edge 不支持 Promise

在 Edge 15 及以下版本中,不支持 Promise。这意味着如果我们在代码中使用 Promise,那么在 Edge 上运行时,代码将无法正常工作。为了解决这个问题,我们需要使用一个 polyfill 来模拟 Promise。

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

上面的代码将引入 babel-polyfill,它将模拟 Promise 和其他 ES6+ 特性。我们只需要在代码中引入这个 polyfill,就可以在 Edge 上使用 Promise 了。

问题二:Edge 不支持 Object.assign

在 Edge 15 及以下版本中,不支持 Object.assign。这意味着如果我们在代码中使用 Object.assign,那么在 Edge 上运行时,代码将无法正常工作。为了解决这个问题,我们需要使用一个 polyfill 来模拟 Object.assign。

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

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

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

上面的代码将引入 babel-polyfill 和 object-assign,它将模拟 Object.assign 和其他 ES6+ 特性。我们只需要在代码中引入这个 polyfill,并使用 object-assign 来实现 Object.assign 的功能,就可以在 Edge 上使用 Object.assign 了。

问题三:Edge 不支持 async/await

在 Edge 15 及以下版本中,不支持 async/await。这意味着如果我们在代码中使用 async/await,那么在 Edge 上运行时,代码将无法正常工作。为了解决这个问题,我们需要使用一个插件来将 async/await 转换为 ES5 代码。

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

安装完插件后,我们需要在 .babelrc 文件中配置插件:

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

上面的配置将启用 transform-async-to-generator 插件,它将将 async/await 转换为 ES5 代码。这样我们就可以在 Edge 上使用 async/await 了。

总结

在使用 Babel 编译 Edge 上运行的 JavaScript 代码时,我们可能会遇到一些问题,如不支持 Promise、Object.assign 和 async/await 等特性。为了解决这些问题,我们需要使用相应的 polyfill 和插件,以便在 Edge 上正常运行我们的代码。

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