javascript - Polyfill 支持 Angular 9 自定义元素?

标签 javascript angular typescript web-component angular-elements

对于使用 Angular 构建的自定义元素的 Polyfilling 支持,Angular 有什么建议?

This demo works仅将此polyfill添加到polyfills.ts中:

import '@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js'

This article说我们应该在 polyfills.ts 中包含以下内容:

import "@webcomponents/custom-elements/src/native-shim";
import "@webcomponents/custom-elements/custom-elements.min";

And this article说我们应该将以下内容添加到 index.html:

<script src="webcomponents/webcomponents-loader.js"></script>
<script>
  if (!window.customElements){document.write('<!--');}
</script>
<script src="webcomponents/custom-elements-es5-adapter.js"></script>
<!-- ! DO NOT REMOVE THIS COMMENT, WE NEED ITS CLOSING MARKER -->

所以是有区别的。在部署使用 Angular 构建的自定义元素时,哪种方法对于 Angular 9 项目来说是正确的?

最佳答案

这完全取决于您想要支持的浏览器以及您的应用程序生成的捆绑语法。

@webcomponents/custom-elements/src/native-shim@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js 具有相同的目的,这些如果浏览器不支持 ES2015 模块或者因为应用程序被显式配置为生成仅 ES5 的 bundle ,则使用。

@webcomponents/custom-elements@webcomponents/custom-elements/src/native-shim 也有相同的目的,即为自定义元素提供支持本身不支持自定义元素的浏览器。

有关这些 polyfill 以及为什么以及何时需要它们的更多信息;

我不建议使用以下模式。

<script src="webcomponents/webcomponents-loader.js"></script>
<script>
 if (!window.customElements){document.write('<!--');}
</script>
<script src="webcomponents/custom-elements-es5-adapter.js"></script>
<!-- ! DO NOT REMOVE THIS COMMENT, WE NEED ITS CLOSING MARKER -->

更好的选择是;

<script src="webcomponents/webcomponents-loader.js"></script>
<script nomodule src="webcomponents/custom-elements-es5-adapter.js"></script>

关于javascript - Polyfill 支持 Angular 9 自定义元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177477/

相关文章:

javascript - 从回调中调用对象的私有(private)方法

javascript - 如何重用 JQuery 的结果进行 JavaScript 文本匹配?

unit-testing - 在 Angular2 测试中模拟 ngrx/store

javascript - 我如何检查 Angular 中的 Mobx 商店是否为空?

javascript - 无服务器堆栈应用程序

Javascript protobuf 性能

Angular 4 Material 显示带有ngFor和ngModel的formArrayName

typescript - 如何将 'describe' 、 'expect' 和 'it' 导入 IDE 的 typescript 测试中以不突出显示它们

javascript - TypeScript UMD 'module' 和 'define' 都未定义

javascript - Typescript 丢失了 forEach 或 map 的未定义上下文