2026-03-08 21:55:27 +08:00

291 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 代码分组
icon: fluent:group-list-20-filled
createTime: 2024/04/04 10:36:59
permalink: /guide/code/group/
---
## 概述
代码组Code Tabs是主题中用于并排展示多个相关代码片段的强大功能。
通过标签页形式组织代码,您可以清晰对比不同技术栈、配置方案或语言版本的实现差异。
## 基础语法
### 多代码块分组
使用代码组语法将多个代码块组织在同一标签容器中:
**输入:**
````md
::: code-tabs
@tab config.js
```js
/**
* @type {import('vuepress').UserConfig}
*/
const config = {
// ..
}
export default config
```
@tab config.ts
```ts
import type { UserConfig } from 'vuepress'
const config: UserConfig = {
// ..
}
export default config
```
:::
````
**输出:**
::: code-tabs
@tab config.js
```js
/**
* @type {import('vuepress').UserConfig}
*/
const config = {
// ..
}
export default config
```
@tab config.ts
```ts
import type { UserConfig } from 'vuepress'
const config: UserConfig = {
// ..
}
export default config
```
:::
### 设置默认激活标签
通过 `@tab:active` 语法指定默认显示的代码标签:
**输入:**
````md
::: code-tabs
@tab config.js
```js
/**
* @type {import('vuepress').UserConfig}
*/
const config = {
// ..
}
export default config
```
@tab:active config.ts <!-- [!code hl] -->
```ts
import type { UserConfig } from 'vuepress'
const config: UserConfig = {
// ..
}
export default config
```
:::
````
**输出:**
::: code-tabs
@tab config.js
```js
/**
* @type {import('vuepress').UserConfig}
*/
const config = {
// ..
}
export default config
```
@tab:active config.ts
```ts
import type { UserConfig } from 'vuepress'
const config: UserConfig = {
// ..
}
export default config
```
:::
## 标签图标支持 <Badge type="tip" text="v1.0.0-rc.103 +" />
主题为代码组标签提供智能图标显示功能,基于标签标题自动匹配相关技术图标。
### 自动图标识别
主题内置了主流技术和语言的图标映射:
**输入:**
````md
::: code-tabs
@tab pnpm
```sh
pnpm i
```
@tab yarn
```sh
yarn
```
@tab npm
```sh
npm install
```
:::
````
**输出:**
::: code-tabs
@tab pnpm
```sh
pnpm i
```
@tab yarn
```sh
yarn
```
@tab npm
```sh
npm install
```
:::
### 支持的图标类别
主题默认适配以下技术栈的图标:
- **运行环境**Node.js、Deno、Bun
- **包管理器**pnpm、yarn、npm
- **前端框架**Vue、React、Angular、Svelte、Solid、Next.js、Nuxt
- **编程语言**TypeScript、JavaScript、C、C++、Java、Python、Rust、Kotlin、Swift、Go
::: info 图标支持反馈
如果您使用的技术栈未能正确显示图标,欢迎提交 [issue](https://github.com/pengzhanbo/vuepress-theme-plume/issues/new) 告知我们,我们将尽快添加相关图标支持。
:::
## 图标配置选项
通过 `markdown.codeTabs` 配置项精确控制图标显示行为:
```ts
export default defineUserConfig({
theme: plumeTheme({
markdown: {
codeTabs: {
icon: true, // 启用图标功能
}
},
})
})
```
配置接口定义:
```ts
export interface CodeTabsOptions {
icon?: boolean | {
named?: false | string[]
extensions?: false | string[]
}
}
```
### 配置示例
**禁用所有图标**
```ts
export default defineUserConfig({
theme: plumeTheme({
markdown: {
codeTabs: {
icon: false
}
}
})
})
```
**仅显示指定技术栈图标**
```ts
export default defineUserConfig({
theme: plumeTheme({
markdown: {
codeTabs: {
icon: {
named: ['pnpm', 'yarn', 'npm'], // 仅匹配这些技术名称
extensions: false // 禁用文件扩展名匹配
}
}
}
})
})
```
**配置说明**
- `named`:精确匹配技术名称(如 `pnpm`、`vue`、`react`
- `extensions`:匹配文件扩展名(如 `.ts`、`.js`、`.py`
- 设置为 `false` 禁用对应匹配方式
- 空数组使用默认匹配规则
- 字符串匹配区分大小写
## 性能优化说明
::: tip 图标体积优化
您无需担心图标资源对构建体积的影响。代码组图标基于 Iconify 体系实现,配合本地安装的 `@iconify/json` 包,主题会自动:
- 解析并提取实际使用的图标数据
- 生成优化的本地图标资源
- 确保相同图标仅打包一次
每个彩色图标的平均体积仅为 1-2KB即使大量使用不同图标对最终构建体积的影响也微乎其微。
:::
通过合理的配置和使用,代码组功能能够显著提升技术文档的可读性和用户体验,帮助读者更高效地理解不同技术方案间的差异。