Vitepress搭建組件庫文檔(下)—— 組件 Demo

来源:https://www.cnblogs.com/youyacoder/archive/2022/10/27/16832341.html
-Advertisement-
Play Games

上文 《Vitepress搭建組件庫文檔(上)—— 基本配置》已經討論了 vitepress 搭建組件庫文檔的基本配置,包括站點 Logo、名稱、首頁 *home* 佈局、頂部導航、左側導航等。本文進入最重要的部分 —— 如何像 *Element Plus* 那樣一遍代碼就可以展示組件的效果和源代碼... ...


上文 《Vitepress搭建組件庫文檔(上)—— 基本配置》已經討論了 vitepress 搭建組件庫文檔的基本配置,包括站點 Logo、名稱、首頁 home 佈局、頂部導航、左側導航等。本文進入最重要的部分 —— 如何像 Element Plus 那樣一遍代碼就可以展示組件的效果和源代碼。

1 組件 Demo 的實現效果

vitepress 對 MarkDown 支持比較好,同時對 vue3 也支持較好。常見的在 MD 文檔中展示 Demo 有兩種方式:

  1. 在一個區塊內展示,添加插件用來解析 demo 區塊,如:
組件基本使用:

:::demo 描述信息
<template>
	<el-button type="primary">測試按鈕</el-button>
</template>
:::
  1. 封裝一個組件,將 Demo 代碼的語言、路徑傳遞給該組件,然後在 MD 文檔中使用該組件,如:
組件基本使用:

<code-preview path="../demos/xx/xxx.vue"
							language="vue">

如果某個組件文檔中 demo 較少,可以使用第一種方式,直接在 MD 文檔中編寫組件 demo;但如果 demo 較多或 demo 實現較複雜,可以使用第二種方式。所以最好兩種方式都支持。

vitepress 1.0 之前(如 0.22.0),vitepress-theme-demoblock 是個非常好的選擇,支持區塊內的方式展示 Demo 和示例代碼,但從 npmjs 上面可以看到該插件有一年多沒更新了,在 vitepress 1.0 中會報錯。不停搜索,總算找到一個可以很好支持 vitepress 1.0 的插件 —— vitepress-demo-preview,這裡非常感謝 vitepress-demo-preview 的作者 flingyp 大神!

2 集成 @vitepress-demo-preview

2.1 安裝依賴

pnpm add @vitepress-demo-preview/component @vitepress-demo-preview/plugin

2.2 config.ts

修改 docs/.vitepress/config.ts,添加 markdown 配置:

import { componentPreview, containerPreview } from '@vitepress-demo-preview/plugin'

...

export default defineConfig({
  ...
  markdown: {
    theme: {
      light: 'vitesse-light',
      dark: 'vitesse-dark'
    },
    lineNumbers: true,
    config(md) {
      md.use(componentPreview)
      md.use(containerPreview)
    }
  }
})

2.3 組件引入

.vitepress 下新建目錄 theme,併在 theme 目錄中創建 index.ts

import theme from 'vitepress/dist/client/theme-default/index'
import { AntDesignContainer } from '@vitepress-demo-preview/component'
import '@vitepress-demo-preview/component/dist/style.css'

export default {
  ...theme,
  enhanceApp({app}) {
    app.component('demo-preview', AntDesignContainer)
  }
}

這樣便完成了 @vitepress-demo-preview 的配置,接下來就可以在組件文檔中編寫demo了。

3 編寫組件 demo

這裡由於是演示,就不編寫測試組件了,簡單的使用 Element-Plus 來模擬組件庫,在文檔使用 Button 編寫 Demo。

3.1 引入組件庫

安裝組件庫依賴:

pnpm install element-plus

.vitepress/theme/index.ts 中安裝組件庫:

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import theme from 'vitepress/dist/client/theme-default/index'
import { AntDesignContainer } from '@vitepress-demo-preview/component'
import '@vitepress-demo-preview/component/dist/style.css'

export default {
  ...theme,
  enhanceApp({app}) {
    app.use(ElementPlus)
    app.component('demo-preview', AntDesignContainer)
  }
}

3.2 編寫組件 Demo

docs 目錄下創建 demo 目錄,該目錄存放文檔中編寫的demo,如定義一個 button-demo-1.vue 文件:

<template>
  <el-button type="primary">測試按鈕</el-button>
</template>

docs/compnents/basic-component1.md 中使用該 Demo:

# Basic Component 1

<preview path="../demos/button-demo-1.vue" title="基本使用" description="xxxxx"></preview>

預覽該頁面:

image-20221025162414708

使用這個插件,只能在文檔外部定義組件 Demo,不支持在 MD 文檔中編寫 Demo。

4 打包組件庫

組件庫打包完成後,需要打包發佈。

打包:

pnpm run build

預覽組件庫:

pnpm run serve

vitepress 編寫組件庫文檔就先介紹到這裡。後面將分享 pnpm + monorepo + vite + vue3 + tsx + vitepress 搭建企業級組件庫,內容大綱如下:

  • pnpm 搭建 monorepo 風格架構;
  • 組件庫開發環境搭建和構建發佈;
  • 組件庫演示 example 開發環境搭建和構建發佈;
  • 組件庫文檔開發環境搭建和構建發佈;
  • 命令行工具開發。

感謝你閱讀本文,如果本文給了你一點點幫助或者啟發,還請三連支持一下,點贊、關註、收藏,作者會持續與大家分享更多乾貨


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 我們知道,在打包Android App之前,我們需要先通過HX生成打包資源。如果是通過cli創建的項目,則通過以下命令生成打包資源: yarn build:app-plus 生成打包資源後的目錄長這樣: 然後將整個目錄中的所有文件拷貝到A ...
  • uni-app自帶uni.request用於網路請求,因為我們需要自定義攔截器等功能,也是為了和我們後臺管理保持統一,這裡我們使用比較流行且功能更強大的axios來實現網路請求。 Axios 是一個基於 promise 網路請求庫,作用於node.js 和瀏覽器中。 它是 isomorphic 的( ...
  • 隨著移動智能終端的普及,未成年人首次觸網的年齡不斷降低。根據中國互聯網路信息中心第48次《中國互聯網路發展狀況統計報告》顯示,截至2021年6月,中國網民規模為10.11億人,6—19歲網民占15.7%,共1.58億人。同時根據第十次中國未成年人互聯網運用調查顯示,中國未成年人互聯網普及率為99.2 ...
  • 好家伙,本篇用於測試"添加"介面,為後續"用戶註冊"功能做鋪墊 (完整代碼在最後) 我們要實現"添加"功能 老樣子我們先來理清一下思路, 現在,我是一個用戶,我來到了註冊頁面,我在一個①表單中要把我要添加的數據填好, 然後點擊添加按鈕,進行②數據校驗(看看用戶有沒有少填的數據), 隨後,③發送網路請 ...
  • 使用three.js(webgl)搭建智慧樓宇、3D園區、3D廠房、3D碼頭、3D海關、3D倉庫、3D定位、三維室內定位、設備檢測、數字孿生、物聯網3D、物業3D監控、物業基礎設施可視化運維、3d建築,3d消防,消防演習模擬,3d庫房,webGL,threejs,3d機房,bim管理系統 ...
  • 2022-10-27 一、Vue的列表渲染 (1)關鍵字:v-for (2)用法:v-for:"臨時變數名 in 列表名"。“列表”的說明是寫在script中的Vue中的data中。 (3)擴展:在列表渲染中,渲染就是在前端能看見的。需要用到索引的用法。v-for:"(臨時變數名,index) in ...
  • 01、HTTP 常⻅的狀態碼有哪些? 1xx 伺服器收到請求 2xx 請求成功 200 成功狀態碼 3xx 重定向 301永久重定向,瀏覽器下次⾃動取重定向的地址 302臨時重定向,瀏覽器下次還會請求原地址 304 資源未被修改 4xx 客戶端錯誤 403 沒有許可權 404 資源未找到 5xx 服務 ...
  • 今天npm run dev的時候,有個頁面報錯,提示[Vue warn]: Failed to mount component: template or render function not defined.昨天還好好的,今天就報錯了,也沒改啥。經過查資料,反覆查證回想改了什麼,發現是因為昨天在在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...