Skip to content

Code 代码块

代码块组件(自研正则 token 高亮,零第三方高亮引擎),支持常见语言基础着色、行号与复制按钮。

JavaScript

JavaScript 高亮

关键字 / 字符串 / 注释 / 数字 / 函数 / 运算符基础着色。

TypeScript

TypeScript 高亮

HTML

HTML 高亮

标签名与属性名分别着色。

CSS

CSS 高亮

JSON

JSON 高亮

行号 + 复制

显示行号

show-line-number 显示行号栏;右上角复制按钮(copyable="false" 可关闭),点击复制源码并派发 oas-copy 事件。

复制按钮开关

copyable 复制按钮

copyable 控制右上角复制按钮(默认 true):设为 false 隐藏按钮;点击按钮将源码写入剪贴板并短暂显示「已复制」。

未知语言

未知语言按纯文本渲染

语言未知时按纯文本渲染(已转义),不报错。

行内代码(inline)

inline 渲染行内代码(等宽+浅底小框,不块级不换行,适合正文内嵌代码片段):

行内代码

使用 声明常量,用 输出。

换行(word-wrap)

word-wrap 时长代码换行不横向滚动:

长代码换行

去首尾空白(trim)

trim 默认 true(去首尾空白),trim="false" 保留:

trim 对照

行内尺寸(size)

size 四档(xs/small/medium/large,inline 语境字号档):

行内尺寸

行内形态(variant)

variant 四形态(subtle 默认浅底 / outline 描边 / plain 纯文字 / solid 实底):

行内形态

行内颜色(color)

color 支持 11 个预设色名(明暗主题自动适配)或任意 CSS 色值(直接生效,优先于预设与默认)。inline 语境的文字色:

行内颜色

字号定制

字号默认为外层字号的 0.875 倍(0.875em),可用 CSS 变量 --oas-code-font 显式定制。

API

属性

属性说明类型默认值
code源代码原文string
color行内文字色:支持 11 个预设名(magenta / red / volcano / orange / gold / lime / green / cyan / blue / geekblue / purple,映射 --oas-preset-*-text token)或任意 CSS 色值string
copyable显示复制按钮stringtrue
inline行内代码模式:渲染为等宽浅底小框,适合正文内嵌代码片段boolean
language语言:js/ts/html/css/json,未知按纯文本string
show-line-number显示行号栏boolean
size行内字号档:xs / small / medium(默认)/ large;非法值回落 medium 并告警
trim去首尾空白(默认 true,trim="false" 保留)stringtrue
variant行内形态:subtle(默认浅底)/ outline(描边)/ plain(纯文字)/ solid(实底);非法值回落 subtle 并告警
word-wrap长代码换行显示,不横向滚动boolean

事件

事件说明
oas-copy复制成功,detail: { text }
oas-copy-error复制失败,detail: { text }

引擎选型(架构决策)

自研正则 token 高亮,不引入第三方高亮库

  1. 零依赖核心卖点:运行时零第三方依赖;自研正则高亮不引入任何依赖。
  2. 覆盖主流语言基础着色:js/ts/html/css/json 的关键字/字符串/注释/数字/函数/标签/属性着色覆盖大多数文档场景;精确的语法级高亮(多行状态机、上下文感知)属后续增强,届时再评估。
  3. 安全:先转义 HTML 再着色,杜绝注入;未知语言纯文本渲染不报错。
  4. 实现为单遍组合正则(互斥捕获组),一次 replace 完成,无二次处理破坏转义实体的问题。

基于 MIT OR Apache-2.0 双许可发布