用途
markstream-angular 技能用于在宿主应用为 Angular 时,干净地采用 Angular 版 markstream 渲染包。适用前提是仓库为 Angular 20 或更新版本,并且可以接受 alpha 阶段的渲染器 API。
主要能力
- 集成 markstream-angular 包,并仅安装所需可选 peer 依赖。
- 从应用外壳导入 markstream-angular/index.css。
- 启用数学公式时,额外引入 katex/dist/katex.min.css。
- 优先采用 Angular 独立组件集成方式,在 imports 中使用 MarkstreamAngularComponent,并保持示例对 signal 友好。
- 支持流式 AI 聊天场景,内置平滑流式(smooth streaming)能力。
- 支持流式与历史恢复两种展示模式的切换,并通过 [final] 标记流结束状态。
- 提供 [htmlPolicy] 与 Mermaid 严格模式等安全相关配置。
使用方式
从 [content] 开始。对于流式 AI 聊天,保留 [content] 并优先使用内置平滑流式。
关键属性说明:
- [smoothStreaming]="'auto'" 为默认值,当 [typewriter]="true" 或 [maxLiveNodes]="0" 时激活。
- [typewriter] 仅控制闪烁光标,默认 false。
- [fade] 控制节点进入与流式文本淡入动画,默认 true。
流式与历史恢复:在聊天 UI 中,同一组件先进行流式渲染,之后在 [final]="true" 时切换为历史内容。
- 流式:[smoothStreaming]="'auto'"、[fade]="false"、[typewriter]="true"。这是保守的视觉与性能选择,并非 API 不兼容。该适配器尚未采用 Vue 3 的有界追加淡入,因此同时启用两者前需验证其动画行为。
- 恢复历史:[smoothStreaming]="false"、[fade]="true"、[typewriter]="false"。内容已完整,节奏控制会拖慢它,但淡入可提供精致的进入动画。
- 动态切换:[smoothStreaming]="isStreaming ? 'auto' : false"、[fade]="!isStreaming"。
使用 [final] 表示流结束状态;当平滑流式激活时,最终解析会等到可见内容追上后才进行。
仅在以下情况才转向 nodes + final:worker 预处理内容、共享 AST 存储或自定义 AST 控制。
安全相关:
- [htmlPolicy] 现在默认 'safe'。
- Mermaid 严格模式通过 [mermaidProps] 默认开启。
- 使用 [customHtmlTags] 和 [customComponents] 处理受信任标签工作流。
验证时使用最小可用的 Angular 开发或构建命令。
默认决策
- 优先独立 Angular,仅当仓库仍依赖 NgModule 时代模式时才使用旧模式。
- 光标视为可选(typewriter 默认 false),但淡入动画默认开启(fade=true)。
- 保持可选 peer 依赖最小且明确。
- 除非任务是保留受信任的旧渲染,否则保持 [htmlPolicy]="'safe'" 与 Mermaid 严格模式。
- 若受信任界面需要更宽泛的旧行为,可在本地通过 [htmlPolicy]="'trusted'" 与 [mermaidProps]="{ isStrict: false }" 退出,并记录该信任边界。
适用场景
- Angular 20+ 应用中集成 Markdown 或 AI 聊天流式渲染。
- 需要 KaTeX 数学公式渲染。
- 需要 Mermaid 图表渲染。
- 需要在流式输出与历史内容之间动态切换的聊天界面。
限制
- 该包处于 alpha 阶段,API 可能变化。
- 要求 Angular 20 或更新版本。
- 该适配器尚未采用 Vue 3 的有界追加淡入,同时启用相关动画前需验证行为。
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。
相关文档
- docs/guide/angular-quick-start.md
- docs/guide/angular-installation.md
- docs/guide/playground.md
- docs/guide/troubleshooting.md