在 Scully 中使用 Web 组件?

问题描述

我构建了一个应用加载动态内容并通过 scully 呈现它。内容中有这样的网络组件:


Content selection dialog that looks like this:

<fs-image url='https://fireflysemantics.github.io/i/developer/instant-html-vscode.png'></fs-image></p>

<p>Sample topic examples</p>",

我猜 scully 试图寻找与标签 fs-image 匹配的 Angular 组件,但由于没有找到,它只是从生成内容删除fs-image 元素。

我们如何告诉 scully fs-image一个网络组件?

要在 Angular 中使用自定义元素,我们需要添加自定义架构:

import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

...

schemas: [CUSTOM_ELEMENTS_SCHEMA],

所以我添加了它,但内容 fs-image 网络组件仍然从 scully 生成内容中剥离。

创建了 scully 问题

https://github.com/scullyio/scully/issues/1204

解决方法

Scully 不会从生成的应用程序中删除任何内容,除非您使用插件主动删除它。

当你运行你的应用程序时,这是它生成的输出:

<html lang="en"><head>
  <meta charset="utf-8">
  <title>Test</title>
  <base href="/">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="styles.09e2c710755c8867a460.css"><style></style></head>
<body data-new-gr-c-s-check-loaded="14.991.0" data-gr-ext-installed="">
  <app-root _nghost-aoj-c3="" ng-version="11.0.9">
    <router-outlet _ngcontent-aoj-c3=""></router-outlet>
    <app-home _nghost-aoj-c2="">
      <p _ngcontent-aoj-c2="">
         <h1> Scully Custom Element Test</h1>  
      </p>
    </app-home><!---->
  </app-root>
<script src="runtime.0e49e2b53282f40c8925.js" defer=""></script>
<script src="polyfills.1f3b39c11fffb306d5a3.js" defer=""></script>
<script src="main.30df6ebad07b05698939.js" defer=""></script>
</body></html>

您可以清楚地看到 fs-image 元素无处可寻。 Scully 无法渲染任何不在应用程序输出中的内容。 您可以通过以下方式自行检查:

ng build --prod
npx scully serve

然后打开http://localhost:1864/。 执行此操作时,您正在查看未修改的应用程序。这就是 Scully 用来生成其输出的内容。 如果它不在那里,Scully 没有办法知道它。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...