For AI agents: the complete documentation index is available at /rspress-russian/llms.txt, the full documentation bundle is available at /rspress-russian/llms-full.txt, and this page is available as Markdown at /rspress-russian/ui/components/code-block-runtime.md.
close

CodeBlockRuntime non-ejectable

CodeBlockRuntime отображает исполняемые блоки кода во время выполнения.

Использование

index.mdx
import { CodeBlockRuntime } from '@rspress/core/theme';

export default function Page() {
  return (
    <CodeBlockRuntime
      lang="js"
      title="index.js"
      code={`console.log('Привет, мир!')`}
      shikiOptions={{}}
    />
  );
}
index.js
console.log('Hello World!')

Передайте lang, title и code для рендеринга блока; shikiOptions настраивает подсветку синтаксиса и также поддерживает трансформеры.

Предупреждение

Используйте CodeBlockRuntime только при необходимости. Он увеличивает размер runtime-бандла, особенно при подключении нескольких языков, и не может использовать преимущества подсветки на этапе сборки.

Использование опций shiki

Вот пример использования трансформера для подсветки строк:

foo.mdx
import { CodeBlockRuntime } from '@rspress/core/theme';
import { transformerNotationHighlight } from '@shikijs/transformers';

<CodeBlockRuntime
  lang="ts"
  title="highlight.ts"
  code={`console.log('Highlighted'); // [!code highlight]
// [!code highlight:1]
console.log('Highlighted');
console.log('Not highlighted');`}
  shikiOptions={{
    transformers: [transformerNotationHighlight()],
  }}
/>
highlight.ts
console.log('Highlighted'); // [!code highlight]
// [!code highlight:1]
console.log('Highlighted');
console.log('Not highlighted');

Импорт содержимого файлов

Вы можете использовать query-параметр ?raw для импорта содержимого файла как строки и передачи его в проп code. Подробности см. в главе Rsbuild - Статические ресурсы.

foo.mdx
import { CodeBlockRuntime } from '@rspress/core/theme';
import codeContent from './example.ts?raw';

<CodeBlockRuntime lang="ts" title="example.ts" code={codeContent} />

Этот подход подходит для сценариев, когда необходимо динамически отображать содержимое внешних файлов, например, для показа примеров кодовых файлов.

Предупреждение

Если вам нужно только ссылаться на внешние файлы как на блоки кода, используйте статический синтаксис блока кода из файла. Он обрабатывается на этапе компиляции, обеспечивает лучшую производительность и меньший размер бандла.