编写Markdown时如何爽爽地渲染树?

在使用VitePress/Dumi等静态网站生成时,一般均支持直接在Markdown中渲染显示Vue/React组件,这给个网站非常丰富极致的表现力,我们在创建静态网站时开心的使用各种Vue/React组件,但是在输出树结构时,实际场景中存在几个问题:

  • 现有的树组件一般均属于某个UI套件的一部分,比较重
  • 树组件的数据一般使用JSON进行描述,冗余很多, 对于在网站输出场景比较交麻烦.

因此,隆重推荐LiteTree这个适用于React/Vue的树组件,专用MarkDown场景准备,具有:

  • 轻量小巧,无任何外部依赖
  • 采用Lite格式描述树,采用类似YAML的缩进来表示层级,数据简洁
  • 支持标识,样式定制,注释,图标等丰富的表现形式

访问官网

快速使用

LiteTree包含@lite-tree/react@lite-tree/vue两个版本,分别在ReactVue中使用,两者的使用方式基本相同。下面以VitePress为例进行说明。

第1步:安装

ts 复制代码
npm install @lite-tree/vue
// or
yarn add @lite-tree/vue
// or
pnpm add @lite-tree/vue

第2步:注册组件

@lite-tree/vueVitePress中使用有两种方式:

  • 按需引入
  • 全局引入

一般建议将LiteTree注册为全局组件,以便在任何地方都可以使用。

ts 复制代码
// .vitepress/theme/index.js
import DefaultTheme from 'vitepress/theme'
import { LiteTree } from '@lite-tree/vue'

/** @type {import('vitepress').Theme} */
export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    // 注册自定义全局组件
    app.component('LiteTree',LiteTree)
  }
}

接下需要在.vitepress/config.mts中配置Vue参数,如下:

ts 复制代码
// .vitepress/config.mts
export default defineConfig({
 // ...
  vue:{
    template: {                      
      compilerOptions: {
        whitespace: 'preserve'      // [!code ++]
      }
    }
  }
})

重点 :设置whitespace: 'preserve'是为了保留Markdown中的空格,以便LiteTree可以正确解析lite格式的树数据。

第3步:使用

由于上面将LiteTree注册为全局组件,因此接下来在任何markdown文件都可以直接使用<LiteTree>组件。

lite-tree支持使用jsonlite两种格式来声明树数据。

lite是一种使用缩进来代表层级的简化格式,每4个空格代表一个树层级,适合在Markdown文档中使用。

下面是一个简单的例子(使用4个空格代表树的一个层缩进):

md 复制代码
<LiteTree>
- A公司
    行政中心
        总裁办              //   {color:red}important
        人力资源部
        财务部              //+
        行政部              //+
        法务部
        审计部              //-
        信息中心            //-
    + 市场中心
        市场部
        销售部
        客服部
        品牌部
        市场策划部
        市场营销部
    研发中心
        移动研发部(java,python,go)    //!
        平台研发部
        测试部              //*
        运维部              //*
        产品部
        设计部
</LiteTree>

可以看到lite格式比起jsonul/li格式更加简洁,适合在Markdown文档中使用。

渲染效果如下:


说明:

  • 可以看到lite格式非常简洁,只需要通过缩进TAB来代表缩进即可,默认情况下,每4个空格代表一个树层级,一个TAB等于4个空格。
  • 默认情况下,前置-号来表示节点展开状态,+号表示节点关闭状态。

访问官网了解更多细节

推荐

相关推荐
我命由我123455 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
Hopebearer_6 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
抱抱宝6 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
东风破_6 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
用户938515635077 小时前
Next.js 笔记系统(二):Redis 数据服务与侧边栏组件拆分实战
javascript·全栈
java1234_小锋8 小时前
Vue3专题 - 组件基础
vue.js·vite
圣殿骑士-Khtangc8 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
BigTopOne9 小时前
【ijkplayer】 硬解码流程
前端
kyriewen9 小时前
DeepSeek Harness开源第一天我就上手了——和Claude Code的差距比想象中大
前端·ai编程·deepseek
捡田螺的小男孩9 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员