【猿创征文】Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建

news2025/8/12 2:12:07

本系列已更新文章:
分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率
开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目
Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo
Vue3 企业级优雅实战 - 组件库框架 - 2 初始化 workspace-root
Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境
Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构
Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包
Vue3 企业级优雅实战 - 组件库框架 - 6 搭建example环境

前面完成了组件库的开发环境搭建和 example,咱们可以在 example 中通过业务驱动组件的开发和完善。但组件库开发的目的是给其他开发人员使用,这时候就需要通过文档来展示组件库的使用以及各个组件的 API、方法、插槽等。本文在前面文章的基础上继续实现组件库文档的开发和构建。组价库的文档咱们使用 vitepress 来实现,在之前的文章《vitepress搭建组件库文档》已经详细介绍了 vitepress 1.0 的使用,该文章中谈到的内容本文就快速略过。

1 搭建组件库文档环境

1.1 初始化工程

前面在工程根目录创建 docs 目录,在命令行中进入 docs 目录,使用 pnpm 初始化:

pnpm init

安装 vitepress 为开发依赖:

pnpm install vitepress -D

修改 package.json 文件的 name,并添加 scripts:

{
  "name": "@yyg-demo-ui/docs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "vitepress dev",
    "build": "vitepress build",
    "serve": "vitepress serve"
  },
  "keywords": [],
  "author": "程序员优雅哥",
  "license": "ISC",
  "devDependencies": {
    "vitepress": "1.0.0-alpha.28"
  }
}

1.2 创建目录及文件

docs 目录下创建 .vitepresspubliccomponentsdemosguide,分别存放 vitepress 配置文件、公共资源目录、组件文档描述、文档中的 demo、组价库的其他说明文档。放一个 logo.png 图片到 public 目录下。

继续在 docs 目录下依次创建下列文件:

  1. 组件库首页 index.md
---
layout: home

title: YYG-DEMO-UI
editLink: true
lastUpdated: true
hero:
  name: yyg-demo-ui
  text: YYG Vue3企业级中后台组件库
  tagline: 组件库描述 / SLOGAN
  image:
    src: /logo.png
    alt: yyg-admin-ui
  actions:
    - theme: brand
      text: 快速开始
      link: /guide/
    - theme: alt
      text: 组件
      link: /components/foo
features:
  - icon: 🔨
    title: 功能/特点 1
    details: 功能/特点 1 具体描述信息。
  - icon: 🧩
    title: 功能/特点 2
    details: 功能/特点 2 具体描述信息。
  - icon: ✈️
    title: 功能/特点 3。
    details: 功能/特点 3 具体描述信息。
---
  1. 组件库菜单 components.ts
export const components = [
  { text: 'Foo 组件示例', link: '/components/foo' }
] // end

guide 目录下分别创建 index.mdquickstart.md

  1. guide/index.md
# 组件库介绍

yyg-demo-ui YYG Vue3企业级中后台组件库
  1. guide/quickstart.md
# 快速开始

xxxxxx

## 用法

全局安装组件库

components 目录下创建示例组件的说明文档 foo.md

# Foo 组件示例

1.3 添加插件并配置 vitepress

  1. 安装 vitepress 中预览组件的插件:
pnpm add @vitepress-demo-preview/component @vitepress-demo-preview/plugin

  1. .vitepress 目录下创建 config.ts
import { DefaultTheme, defineConfig } from 'vitepress'
import { componentPreview, containerPreview } from '@vitepress-demo-preview/plugin'
import { components } from '../components'

const nav: DefaultTheme.NavItem[] = [
  { text: '指南', link: '/guide/' },
  { text: '组件', link: '/components/foo' }
]

const sidebar: DefaultTheme.Sidebar = {
  '/guide': [
    {
      text: '指南',
      items: [
        { text: '组件库介绍', link: '/guide/' },
        { text: '快速开始', link: '/guide/quickstart' },
      ]
    }
  ],
  '/components': [{
    items: [
      ...components
    ]
  }]
}

export default defineConfig({
  title: 'yyg-admin-ui',
  description: 'YYG Vue3企业级中后台组件库',
  lang: 'cn-ZH',
  base: '/',
  lastUpdated: true,
  themeConfig: {
    logo: '/logo.png',
    siteTitle: 'yyg-admin-ui',
    outline: 3,
    socialLinks: [
      { icon: 'github', link: 'https://github.com/vuejs/vitepress' }
    ],
    nav,
    sidebar
  },
  markdown: {
    theme: {
      light: 'vitesse-light',
      dark: 'vitesse-dark'
    },
    lineNumbers: true,
    config(md) {
      md.use(componentPreview)
      md.use(containerPreview)
    }
  }
})

  1. .vitepress 目录下创建 theme 目录,并在 theme 中创建 index.ts
import DefaultTheme from 'vitepress/theme'
import { AntDesignContainer } from '@vitepress-demo-preview/component'
import '@vitepress-demo-preview/component/dist/style.css'
import { EnhanceAppContext } from 'vitepress'

export default {
  ...DefaultTheme,
  enhanceApp(ctx: EnhanceAppContext) {
    ctx.app.component('demo-preview', AntDesignContainer)
  }
}

此时组件库的文档结构就搭建好了,可以在 docs 目录下执行 pnpm run dev,测试服务是否能正常启动,页面是否正常显示。

2 编写组件的文档

上一步已经引入了用于展示组件 demo 的插件,这一步就简单了。

2.1 安装 element plus 和组件库

  1. docs 目录下安装依赖:
pnpm install element-plus
pnpm install @yyg-demo-ui/yyg-demo-ui

  1. .vitepress/theme/index.ts 中引入组件库:
...
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import YygDemoUi from '@yyg-demo-ui/yyg-demo-ui'
...
export default {
  ...DefaultTheme,
  enhanceApp(ctx: EnhanceAppContext) {
    ctx.app.use(ElementPlus)
    ctx.app.use(YygDemoUi)
    ctx.app.component('demo-preview', AntDesignContainer)
  }
}

2.2 编写demo

docs/demos 目录下创建子目录 foo,在 foo 目录下创建两个组件:

foo-1.vue

<template>
  <el-button type="primary">测试按钮</el-button>
</template>

foo-2.vue

<template>
  <yyg-foo :msg="msg"></yyg-foo>
</template>

<script lang="ts" setup>
import { ref } from 'vue'

const msg = ref('hello custom component')
</script>

2.3 vite 配置文件

docs 目录下创建 vite 的配置文件 vite.config.ts,该文件主要配置开发端口和 jsx 插件:

import { defineConfig } from 'vite'
import VueJsx from '@vitejs/plugin-vue-jsx'

export default defineConfig({
  plugins: [
    VueJsx()
  ],
  server: {
    port: 3100
  }
})

2.4 在组件库文档中展示 demo

docs/components/foo.md 文件中展示上面两个 demo:

# Foo 组件示例

第一个示例:

<preview path="../demos/foo/foo-1.vue" title="基本使用" description="测试使用 Element Plus 组件"></preview>

第二个示例:

<preview path="../demos/foo/foo-2.vue" title="基本使用" description="测试使用自定义组件库组件"></preview>

## 组件介绍

3 运行组件库文档

3.1 本地开发

pnpm run dev

访问 http://localhost:3100/components/foo.html,可以看到 foo 组件的说明文档:

image-20221114210703244

3.2 打包构建

  1. 打包组件库文档:
pnpm run build

打包后的文档位于:docs/.vitepress/dist 中。

  1. 预览打包后的结果:
pnpm run serve

预览的效果与本地启动服务的效果一致。

到此咱们已经完成了组件库文档的开发环境搭建和打包构建,下一篇文章将分享加速器 —— 创建新组建的脚手架 cli 的开发。

感谢你阅读本文,如果本文给了你一点点帮助或者启发,还请三连支持一下,点赞、关注、收藏,程序员优雅哥会持续与大家分享更多干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2的路由和异步请求

目录 1.路由 1.1路由的作用 1.2使用CLI3创建带路由功能的Vue2项目(案例) &#xff08;1&#xff09;创建vue项目 &#xff08;2&#xff09;选择手动设置特性&#xff08;Manually select features&#xff09; &#xff08;3&#xff09;添加路由特性选项 1.3 路由使用入门 …

企业如何利用APS排程软件建立起精益供应链与生产体系

精益供应链&#xff0c;英文称为Lean Supply Chains&#xff0c;它来源于精益管理&#xff0c;将从产品设计到顾客得到产品&#xff0c;整个过程所必需的步骤和合作伙伴整合起来&#xff0c;快速响应顾客多变的需求&#xff0c;其核心是减少、消除企业中的浪费&#xff0c;用尽…

skywalking全链路追踪

系统: centos7.6.1810 内核: 3.10.0-957.el7.x86_64 一、先下载相关的工具 官网下载地址: https://skywalking.apache.org/downloads/ openresty官网下载地址: http://openresty.org/en/download.html 下载openresty工具&#xff0c;捆绑了lua模块&#xff0c;收集日志需要用到…

Arctic——流式湖仓系统

1、Arctic介绍 Arctic 是由网易开源的流式湖仓系统&#xff0c;Arctic 在 Iceberg 和 Hive 之上添加了更多实时场景的能力&#xff0c;并且面向 DataOps 提供流批统一&#xff0c;开箱即用的元数据服务&#xff0c;让数据湖更加好用和实用。 Arctic 是搭建在 Apache Iceberg …

详解MybatisPlus数据安全

MybatisPlus数据安全 概述 ​ 存在数据库中的数据对于普通用户而言是不可见的&#xff0c;好像是藏起来了一样&#xff0c;但对于开发者&#xff0c;只要知道数据库的连接地址、用户名、密码&#xff0c;则数据不再安全&#xff1b;这也意味着&#xff0c;一旦连接数据库的配…

卡塔尔世界杯倒计时!世界杯直播在哪里观看?美家市场汇总来了!

来了来了&#xff0c;2022卡塔尔世界杯倒计时3天&#xff01;2022卡塔尔世界杯将在北京时间11月21日开始&#xff0c;持续时间28天&#xff0c;至2022年12月18日结束&#xff0c;将近一个月的赛程让众多球迷们期待不已&#xff0c;这一个月将是全世界球迷们最快乐的一个月&…

【网站架构】如何长久运行升级?高可用部署只是基础,巡检、监控、应用数据备份、日志、灰度发布

大家好&#xff0c;欢迎来到停止重构的频道。本期讨论大型网站的可用性。 高可用指的是当一部分服务器宕机时&#xff0c;网站系统仍可正常运行。 一些常用的软件服务的高可用部署方案 &#xff0c;如Tomcat、Nginx、Redis、MySQL等&#xff0c;在往期性能调优时已经有详细的介…

H5组件Canvas画电子印章

效果图 代码 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>HTML5 Canvas印章</title> <script type"text/javascript" src"https://code.jquery.com/jquery-2.2.4.js"></scri…

电科大离散数学-4-二元关系

目录 4.1 序偶和笛卡尔积 4.1.1 有序组的定义 4.1.2 笛卡儿积 4.1.3 笛卡儿积的性质 4.1.4 推广 4.2 关系的定义 4.2.1 二元关系的定义 4.2.2 二元关系的数学符号 4.2.3 枚举二元关系 4.2.4 几种重要关系 4.2.5 定义域和值域 4.2.6 n元关系 4.3 关系的表示 4.3.1…

[附源码]SSM计算机毕业设计中小型艺术培训机构管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历

多方式循环遍历1. List<Map<String, Object>>多方式循环测试结果2. Map&#xff1c;String,List&#xff1c;Map&#xff1c;String, Object&#xff1e;&#xff1e;&#xff1e;测试结果☀️相关笔记章节&#xff1a; &#x1f339;java 1.8 stream使用总结&…

MySQL8.0优化 - 优化MySQL服务器、优化MySQL的参数、优化数据类型

文章目录学习资料优化MySQL服务器优化服务器硬件配置较大的内存配置高速磁盘系统合理分布磁盘I/O配置多处理器优化MySQL的参数innodb_buffer_pool_sizekey_buffer_sizetable_cachequery_cache_sizequery_cache_typesort_buffer_sizejoin_buffer_sizeread_buffer_sizeinnodb_flu…

RabbitMQ初步到精通-第四章-RabbitMQ工作模式-SIMPLE

RabbitMQ工作模式-SIMPLE模式 1.模式介绍 这是最简单的一个模式了&#xff0c;一般在实际的生产环境中&#xff0c;大家应该都不会使用一个消费者。只做入门的介绍。 一个生产者&#xff0c;一个默认的交换机【图中没体现】&#xff0c;一个队列&#xff0c;一个消费者。 生产…

【Java技术专题】「Java8技术盲区」函数接口字典-看看还有哪些你所不知道函数接口

函数接口的定义 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法&#xff0c;但是可以有多个非抽象方法的接口。 函数接口的特点 函数式接口可以被隐式转换为lambda表达式。 Lambda表达式和方法引用&#xff08;实际上也可认为是Lambda表达式&#xff09;上。 …

子序列宽度之和

目录题目1. 子序列2. 子序列找最大最小值3. 代码题目 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums &#xff0c;返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大&#xff0c;请返回对 109 7 取余 后的结果。 子序列 定义…

[附源码]java毕业设计农业种植管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

IDEA中给源码添加自己注释——private-notes插件安装使用

一、前言 我们在空闲之余喜欢研究一些经典框架的源码&#xff0c;发现没办法把自己的注释添加上。 会给出提示&#xff1a;File is read-only 很烦&#xff0c;但是为了安全考虑也是没有办法的&#xff01; 这是一个大佬就写了一个IDEA插件&#xff0c;让我们摆脱了这个烦恼&a…

U2-Net 使用嵌套 U 结构进行更深入的显着目标检测

在给定图像中分割不同的对象一直是计算机视觉领域的一项众所周知的任务。多年来,我们已经看到自编码器到疯狂的深度学习模型(如 Deeplab)被用于语义分割。在所有模型的深海中,仍然有一个名字排在最前面,它就是U-Net。U-Net 于 2018 年发布,此后获得了巨大的普及,并以某种…

Android入门第30天-Android里的Toast的使用

介绍 本篇带来的是&#xff1a; Android用于提示信息的一个控件——Toast(吐司)&#xff01;Toast是一种很方便的消息提示框,会在 屏幕中显示一个消息提示框,没任何按钮,也不会获得焦点一段时间过后自动消失&#xff01; 非常常用&#xff01;我们通过一个例子把Toast的使用讲…

【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS

1 Service 与 Pod 的 DNS Kubernetes 为 Service 和 Pod 创建 DNS 记录。 你可以使用一致的 DNS 名称而非 IP 地址访问 Service。 Kubernetes DNS 除了在集群上调度 DNS Pod 和 Service&#xff0c; 还配置 kubelet 以告知各个容器使用 DNS Service 的 IP 来解析 DNS 名称。 集…