Code 代码块
代码块组件(自研正则 token 高亮,零第三方高亮引擎),支持常见语言基础着色、行号与复制按钮。
JavaScript
JavaScript 高亮
关键字 / 字符串 / 注释 / 数字 / 函数 / 运算符基础着色。
TypeScript
TypeScript 高亮
HTML
HTML 高亮
标签名与属性名分别着色。
CSS
CSS 高亮
JSON
JSON 高亮
行号 + 复制
显示行号
show-line-number 显示行号栏;右上角复制按钮(copyable="false" 可关闭),点击复制源码并派发 oas-copy 事件。
复制按钮开关
copyable 复制按钮
copyable 控制右上角复制按钮(默认 true):设为 false 隐藏按钮;点击按钮将源码写入剪贴板并短暂显示「已复制」。
未知语言
未知语言按纯文本渲染
语言未知时按纯文本渲染(已转义),不报错。
API
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
code | 源代码原文 | string | — |
copyable | 显示复制按钮 | string | true |
language | 语言:js/ts/html/css/json,未知按纯文本 | string | — |
show-line-number | 显示行号栏 | boolean | — |
事件
| 事件 | 说明 |
|---|---|
oas-copy | 复制成功,detail: { text } |
oas-copy-error | 复制失败,detail: { text } |
引擎选型(架构决策)
自研正则 token 高亮,不引入第三方高亮库:
- 零依赖核心卖点:运行时零第三方依赖;自研正则高亮不引入任何依赖。
- 覆盖主流语言基础着色:js/ts/html/css/json 的关键字/字符串/注释/数字/函数/标签/属性着色覆盖大多数文档场景;精确的语法级高亮(多行状态机、上下文感知)属后续增强,届时再评估。
- 安全:先转义 HTML 再着色,杜绝注入;未知语言纯文本渲染不报错。
- 实现为单遍组合正则(互斥捕获组),一次 replace 完成,无二次处理破坏转义实体的问题。