说明
面向 AI 场景“代码块展示”的组件,内置一个轻量、纯托管的分词器(不依赖 highlight.js / prism 等第三方 JS,也不做任何 JS 互操作),按
常见能力:
- 内置纯托管分词器:关键字 / 字符串 / 注释 / 数字着色,无第三方 JS、无 JS 互操作
- 覆盖 C# / JS / TS / Java / Python / Go / SQL / JSON / Shell,含常见别名;未识别语言安全退化为仅字符串着色
- 头部栏:语言徽标 ShowLanguage + 文件名 Filename + 复制按钮 Copyable
- LineNumbers 行号、Wrap 软换行 / 横向滚动、MaxHeight 限高内部滚动
- 无 JS:复制按钮仅触发 OnCopy,navigator.clipboard 写入由宿主完成
- 配色走 CSS 变量随框架明暗主题切换,等宽字体用 --font-mono 令牌
- 代码 / 语言 / 文件名视为业务数据不本地化,仅“复制”按钮文案走词条
用法
<CodeHighlighter Code="@cs" Language="csharp" Filename="OrderService.cs"
MaxHeight="320px" OnCopy="@(() => CopyAsync(cs))" />
<CodeHighlighter Code="@sql" Language="sql" LineNumbers="false" Wrap="true" />
@code {
string cs = "public class Foo { void Bar() { /* … */ } }";
string sql = "SELECT id, name FROM t WHERE status = 'active';";
async Task CopyAsync(string code) => await JS.InvokeVoidAsync("navigator.clipboard.writeText", code);
}
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Code |
string |
null |
源码文本(业务数据、不本地化)。 |
Copyable |
bool |
true |
是否显示复制按钮。默认 true。 |
CopyText |
string |
"复制" |
复制按钮文案(作为翻译键)。默认“复制”。 |
Filename |
string |
null |
头部左侧文件名 / 标题(业务数据、不本地化)。留空则不显示。 |
Language |
string |
null |
语言标识(如 csharp / js / python / sql,不本地化)。未知语言时退化为仅字符串着色。 |
LineNumbers |
bool |
true |
是否显示行号。默认 true。 |
MaxHeight |
string |
null |
代码区最大高度(如 “320px”),超出内部滚动。留空则不限高。 |
OnCopy |
EventCallback |
— | 事件 点击复制的回调。组件保持无 JS,实际写入剪贴板由宿主完成。 |
ShowLanguage |
bool |
true |
是否在头部显示语言标签。默认 true。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Wrap |
bool |
false |
是否软换行(否则横向滚动)。默认 false。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群