Slot 插件
Slot 插件负责渲染插槽。代码块、链接、标题等内容已经准备好,你只需要决定它们的组件和交互。
声明与使用
下面隐藏代码块工具栏,保留默认高亮和代码样式。先写一个普通 Svelte 组件:
compact-code-block/main.svelte
通过目录入口导出组件,再将它注册为 CodeBlock 插槽的插件:
compact-code-block/index.ts
plugins.ts
key 标识插件,type 选择插槽,Component 指向 Svelte 组件。Fluxdown 管理插件的创建和清理。
插件基类和属性类型从
@fluxdown/svelte-plugins/base导入。先安装@fluxdown/svelte-plugins。
保留默认功能
Raw 是前一个插件提供的渲染 snippet。通过 {@render Raw(props)} 保留已有的高亮或排版,修改传入属性即可调整其中一部分。
相同优先级下,同一插槽后面的插件通过 Raw 包裹前面的组件。完全替换时,直接编写自己的 Svelte 模板;有子内容的插槽通过 {@render children?.()} 渲染它。
Raw可能为null,调用前需要检查。Raw和children都是 Svelte 的 snippet。
添加交互
例如记录链接点击,同时保留之前的点击回调:
tracked-link/main.svelte
tracked-link/index.ts
将 TrackedLink 赋给一个 BaseSlotPlugin<'Link'> 子类的 Component,再加入 plugins.slots。这里的 trackLink 由应用提供。