We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Vitepress/dumi/Rspress/docsify
在使用Vitepress/dumi/Rspress/docsify等基于markdown的静态网站生成器如何更好地渲染树组件一直是个问题。
markdown
现在的静态网站生成器功能均非常强大,一般均会支持直接在Markdown中直接写Vue或React组件,按理说,要渲染树组件应该容易才对,但是很不幸的是现有的组件均不是为Markdown场景准备,实际使用非常不方便。
Markdown
Vue
React
为什么这样说呢?
一般在要显示树时,我们会使用JSON或HTML来描述树,比如我们要显示一棵组织架构树,采用JSON
JSON
HTML
{ "name": "A公司", "children": [ { "name": "行政中心", "children": [ { "name": "总裁办", }, { "name": "人力资源部", "checked": true }, { "name": "财务部", "unchecked": true, }, { "name": "行政部", "comment": "负责行政管理" }, { "name": "法务部", "comment": "打官司等" }, { "name": "审计部", "attributes": { "icon": "airplane" }, "comment": "审计财务", }, { "name": "信息中心", "comment": "重点", }, { "name": "安全保卫部", "comment": "保密工作", } ] }, { "name": "市场中心", "collapsed": true, "children": [ { "name": "市场部" }, { "name": "销售部", "collapsed": true }, { "name": "客服部", "collapsed": true }, { "name": "品牌部", "comment": "this is cool" }, { "name": "市场策划部", }, { "name": "市场营销部", } ] }, .... ] }
JSON或者HTML
采用JSON或者HTML来描述树的最在问题在于:
LiteTree是一款专为Markdown场景准备的树组件,其采用的是用类似YAML的方式,由4个空格或1个TAB来描述树,所以在Markdown中来描述树就非常简洁。
LiteTree
YAML
以Vitepress为例:
Vitepress
npm install @lite-tree/vue // or yarn add @lite-tree/vue // or pnpm add @lite-tree/vue
// ./vitepress/config.mts import { defineConfig } from 'vitepress' export default defineConfig({ vue:{ template: { compilerOptions: { whitespace: 'preserve' } } } })
// .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) } }
LiteTree最大的特点是支持使用4个空格或1个TAB代表树的一个层级缩进,这使得在 Markdown中创建树非常简洁直观,这才是在Markddown中渲染树的正确打开方式。
4个空格
1个TAB
Markddown
直接在任意markdown中按如下方式声明树:
<LiteTree> - [airplane]A公司({color:red;}重点,{#blue}紧急) // 企业名称 行政中心 {color:red;font-weight:bold;background:#ffeaea}总裁办 [checked]人力资源部 [unchecked]{.blue}财务部 行政部 //+ 负责行政管理 法务部 //+ 打官司等 [airplane]审计部 //+ 审计财务[保存:tag](sss) [连接](sss) 信息中心 // 重点[保存](www.baidu.com)[tag][连接:tag](www.baidu.com) [star]安[star]全[star]保[star]卫[star]部[star] //{color:red} 保密工作 + 市场中心 市场部({#error}出错,"{#warning}警告") 销售部 //- 客服部 //- {#blue}品牌部 // this is cool 市场策划部 //! 重点 市场营销部 // {.blue}this is cool 研发中心 移动研发部 //! 平台研发部({success}Java,{error}Go) {.success}测试部 运维部 产品部 //* 设计部 //* 项目管理部 //* </LiteTree>
渲染效果如下:
LiteTree包含@lite-tree/vue、@lite-tree/react、@lite-tree/webcomponent三个版本,基本覆盖了所有的Markdown场景。
@lite-tree/vue
@lite-tree/react
@lite-tree/webcomponent
支持在Vitepress/dumi/Rspress/docsify等静态网站生成器中生成树。
开源地址
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在使用
Vitepress/dumi/Rspress/docsify
等基于markdown
的静态网站生成器如何更好地渲染树组件一直是个问题。现在的静态网站生成器功能均非常强大,一般均会支持直接在
Markdown
中直接写Vue
或React
组件,按理说,要渲染树组件应该容易才对,但是很不幸的是现有的组件均不是为Markdown
场景准备,实际使用非常不方便。为什么这样说呢?
一般在要显示树时,我们会使用
JSON
或HTML
来描述树,比如我们要显示一棵组织架构树,采用JSON
JSON
或者HTML
采用
JSON
或者HTML
来描述树的最在问题在于:markdown
中就很成问题了。LiteTree
是一款专为Markdown
场景准备的树组件,其采用的是用类似YAML
的方式,由4个空格或1个TAB来描述树,所以在Markdown
中来描述树就非常简洁。以
Vitepress
为例:LiteTree
最大的特点是支持使用4个空格
或1个TAB
代表树的一个层级缩进,这使得在Markdown
中创建树非常简洁直观,这才是在Markddown
中渲染树的正确打开方式。直接在任意
markdown
中按如下方式声明树:渲染效果如下:
LiteTree
包含@lite-tree/vue
、@lite-tree/react
、@lite-tree/webcomponent
三个版本,基本覆盖了所有的Markdown
场景。支持在
Vitepress/dumi/Rspress/docsify
等静态网站生成器中生成树。开源地址
The text was updated successfully, but these errors were encountered: