Rendertron 和 <script> 标签

Rendertron & <script> tags

我开始将 Rendertron 用于 Angular 6 应用程序。我注意到它不呈现 <script> 标签。您知道如何配置它吗?

我需要这个的原因是 JSON-LD 标记。

我也将 injectShadyDom 设置为 true;它默认为假。我不知道这是否有帮助,尽管这更适用于 Web 组件。

是的,这可以通过更新源代码来实现。有一个 stripPage() 函数可以删除所有脚本标签。此函数位于 renderer.ts 文件的第 32 行。通过一个小技巧,我可以跳过带有 type="application/ld+json" 的标签。是时候清理它、使其可配置并提交拉取请求了!

原函数

function stripPage() {
  const elements = document.querySelectorAll('script, link[rel=import]');
  for (const e of Array.from(elements)) {
    e.remove();
  }
}

修改函数

    function stripPage() {
        const elements = document.querySelectorAll('script, link[rel=import]');
        for (const e of Array.from(elements)) {
            if (e.getAttribute('type') !== 'application/ld+json') {
                e.remove();
            }
        }
    }