Skip to content

CodeBlock 代码块

用于展示代码的暗色主题组件,支持语言标签、行号、一键复制和基础语法高亮。

基础用法

javascript
class="vk-code-keyword">function greet(name) {
  console.log(class="vk-code-string">`Hello, ${name}!`)
  class="vk-code-keyword">return true
}

greet(class=class="vk-code-string">"vk-code-string">'World')
<script setup>
import CodeBlock from '@/vue/components/CodeBlock.vue'

const code = `function greet(name) {
  console.log(\`Hello, \${name}!\`)
  return true
}

greet('World')`
</script>
<template>
  <CodeBlock :code="code" language="javascript" />
</template>

显示行号

设置 showLineNumbers 属性显示行号,title 可显示文件名。

counter.ts
1234567
import { ref } from class=class="vk-code-string">"vk-code-string">'vue'

class="vk-code-keyword">const count = ref(class="vk-code-number">0)

class="vk-code-keyword">function increment() {
  count.value++
}
<script setup>
import CodeBlock from '@/vue/components/CodeBlock.vue'

const code = `import { ref } from 'vue'

const count = ref(0)

function increment() {
  count.value++
}`
</script>
<template>
  <CodeBlock :code="code" language="typescript" title="counter.ts" show-line-numbers />
</template>

多语言

支持 JavaScript/TypeScript、Python、CSS、Bash 的基础语法高亮。

fib.py
class="vk-code-keyword">def fibonacci(n):
    if n <= class="vk-code-number">1:
        return n
    return fibonacci(n - class="vk-code-number">1) + fibonacci(n - class="vk-code-number">2)
style.css
.container {
  display: flex;
  gap: 16px;
  padding: 24px;
}
<script setup>
import CodeBlock from '@/vue/components/CodeBlock.vue'

const pyCode = `def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)`

const cssCode = `.container {
  display: flex;
  gap: 16px;
  padding: 24px;
}`
</script>
<template>
  <div style="display: flex; flex-direction: column; gap: 16px;">
    <CodeBlock :code="pyCode" language="python" title="fib.py" />
    <CodeBlock :code="cssCode" language="css" title="style.css" />
  </div>
</template>

React 用法

tsx
import { CodeBlock } from '@bobocn/element/react'
import '@bobocn/element/style.css'

const code = `const x = 42
console.log(x)`

function App() {
  return (
    <CodeBlock
      code={code}
      language="javascript"
      title="example.js"
      showLineNumbers
    />
  )
}

API

属性 (Attributes)

属性名说明类型默认值
code代码内容string''
language编程语言string''
title文件名/标签string
showLineNumbers是否显示行号booleanfalse
copyable是否显示复制按钮booleantrue
maxHeight代码区最大高度string'400px'
copyText复制按钮文案string'复制'
copiedText已复制按钮文案string'已复制'

基于 MIT 许可发布