百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

Vue组件库系列三:打造属于自己的 UI 库文档(新版本的方案)

qiyuwang 2024-10-06 12:17 19 浏览 0 评论

上一章介绍了element-ui老版本中md文档构建过程,如果大家认真看了,就会发现在.md文档中还是有一些重复的部分,怎样使文档看着更加简洁,操作更加方便,饿了么团队下了很大的力气做了探索,现在我们一起分享这个成果

我们先来看看input.md新文档是怎么写的

对比老版本的input.md文档,我们发现少了最开始的<script>...</script>,但是我们操作页面,发现JavaScript交互仍然是正常的,页面底部也未报错,说明原本模板里面的JavaScript被抽出来”共享“了

接下来,我们逐步去分析element是如何实现这个创举.

1、添加依赖

这一步和之前没多大的区别

yarn add markdown-it markdown-it-container markdown-it-chain markdown-it-anchor transliteration @vue/component-compiler-utils vue-template-compiler -D

2、配置loader

查看build/webpack.demo.js下面关于md格式的解析器配置,可以发现新版本用了一个自定义的md-loader

3、分析md-loader

打开md-loader/index.js我们发现用到了几个工具函数

具体方法如下:

前面两个是用来提取script和style标签里面的内容,这个很厉害哦,这样做是为啥,请继续接着看

genInlineComponentText这个函数就跟厉害了,它将一个模板template和模板对应的script转成一个内联组件并返回。也就是说element将:::demo ```html 例子 ``` :::中间的例子转成一个个内联component注入到整个页面中,这样就完美的实现了JavaScript交互。是不是很机智

接下来,我们看看config.js里面的内容

发现和老版本里面一样,都是用了markdown-it-chain,markdown-it-anchor,前者是markdown-it的链式操作,后者是生成锚点,如下图圈起来的部分

transliteration这个函数是用来将中文标题翻译成拼音,并用”-“连接符连接。如“npm 安装

”翻译成“npm-an-zhuang”

然后,我们看看container.js里面具体干了啥

惊不惊喜,意不意外,还是用到了markdown-it-container解析md文档内容。validate表示检测以"::: demo"开始的都符合条件,当我们写:::demo :::这样的语法时才会进入自定义渲染方法。render里面用到了一个占位符<!--element-demo: ${content}:element-demo-->,这个将在后面介绍其作用,render方法主要讲md文档包裹一层我们自定义的组件<demo-block>,md文档被当做slot传入

接下来,我们看看fence.js做了啥

好像文档注释已经解释了,覆盖默认的markdown-it fence渲染规则,这段代码主要高亮显示md里面的代码(还需要highlight.js的css样式文件支持)

最后,我们看一下index.js是怎么将这几部分串起来的

总的来看,index.js返回的是一个function,然后我们看到在container.js中定义的<!--element-demo:占位符以及之前util里面定义的stripTemplate,stripScript,genInlineComponentText,我们看到在while循环中不断生成<template slot="source"><${demoComponentName} /></template>,最后组成一个新的组件

4、看看demo-block组件,这个出现在container.js里面,还记得吗?

里面有<slot name="source"></slot>,<div class="description" v-if="$slots.default"> <slot></slot> </div>,<slot name="highlight"></slot>分别对应着生成的内联组件,组件描述语句和高亮源码三部分

验证解说

刚刚说的比较散,大家理解可能有断点,接下来我将element-ui组件文档中的input.md来看看具体的解析过程,下面是选取的一段md文档

我们在build/md-loader/index.js里面打印出两个点,看看到底是什么东东

source其实就是我们的md文档内容

content是利用md解析器解析的html

这里的占位符<!--as-ui-demo:是我自定义的,你也可以根据自己的喜好设定。我们再看看通过index.js里面的函数解析之后是什么样的

是不是和我上面解说的一致?

运行效果如下,是不是很期待去自己试试


总结

好了,到这里应该全部讲完了新版组件文档的生成过程,大家可以参照整个流程去理解,也可以参照element-ui里面的源码去自己体验一把。纸上得来终觉浅,自己敲一敲,瞧一瞧,才能有更深的理解。

下一章,将带大家去理解element-ui如何实现组件按需引入的,这也是自己编写组件库不可不知的点!大家可以先行进行思考下方案

相关推荐

别再乱找了!这才是 Alist 本地安装挂载的正确打开方式

一、探秘Alist的神奇世界在这个数据爆炸的时代,我们的生活里充斥着各种各样的网盘服务,百度网盘、阿里云盘、腾讯微云等等,它们成了我们存储资料的得力助手。但随着网盘数量的增多,管理这些分散在不同平...

如何将数据从旧iPhone传输到新iPhone 16?这五个方法你必须知道!

前不久,苹果发布了备受期待的iPhone16系列,新机型搭载了更强大的芯片、更流畅的操作体验,还有备受热议的全新摄像系统。无论你是冲着A18仿生芯片,还是更丰富的动态岛功能,相信很多果粉早已跃跃欲试...

大数据传输的定义与大数据传输解决方案的选择

当我们需要处理大量的数据时,我们就要把数据从一个地方移动到另一个地方。这个过程就叫做大数据传输。它通常需要用到高速的网络连接、分散的存储系统和数据传输协议,以保证数据的快速、可靠和安全的移动。常用的大...

【工具】在线传输文件工具(在线文件互传)

前言在线传输文件工具主要是用于在不同的设备之间,如手机、电脑、平板等快速便捷地传送文件。告别使用USB传统传输文件的方式。...

如何使用 CAN-FD 在 LPC5500 上传输数据

目录1引言2CAN-FD3示例演示1引言...

轻松同步:将照片从三星手机传输到iPad的简便方法

概括想要在新iPad上查看三星照片吗?但是,如果您不知道如何将照片从三星手机传输到iPad,则无法在iPad上查看图片。为此,本文分享了7个有用的方法,以便您可以使用它们在不同操作系统之...

常见又地道的网络缩写:美剧中常说的SFW到底是个啥?

在这堂课中,让我们来学习更多在数字网络世界中常用的有趣网络用语。7shifts/unsplashhttp,https“http”和“https”是万维网(www)传输文件用的协议。“http”是hy...

每天学会一个计算机网络协议之FTP

开始行文之前提出一个问题,相信大家在看完本文后一定可以回答当我们在网站上填写注册信息的时候,需要我们上传照片,上传的过程发生了什么?下面引入我们的主角,FTP文件传输协议FTPFileTransf...

即用即走,这3款文件分享工具真香

打工人的日常,免不了「文件分享存储服务」的需求。我们一般会选择不同的网盘,但是大家也知道,网盘不是限速就是叫你充值。今天跟大家简单推荐3款文件分享工具,既可以免登录匿名使用,而且操作简单稳定性也不错。...

安卓手机里的文件和照片与Mac互传的办法

因为HandShake一段时间未更新,似乎目前不可操作。我一时间未找到更好的「传输」办法,经实践操作,向大家介绍一下「安卓手机」,包括「一加」、「索尼」,都可用此方法,来进行文件传输到Mac的...

软网推荐:同一个平台选择不同的传输方法

平时上网的时候,我们经常要分享一些文件给其他朋友,一般通过云服务平台来实现。今天笔者给大家介绍的Worksphere传输服务,它提供了两种不同的分享方式,方便我们根据实际需要进行选择。一个链接分享所有...

跨平台不限速的免费文件传输网站(跨平台不限速的免费文件传输网站是什么)

大家好,欢迎来到天天惠分享,不知道各位平时都是用什么方法来进行文件跨平台传输的呢?是百度网盘?微信还是QQ?亦或是有线传输。虽然这些方法都可以达到传输的目的,但都有各自的缺陷,使用起来一言难尽。比如百...

全网最全最详细的全平台文件传输方法,解决你文件传输问题(一)

前言想必现在大多数人文件传输的方法还是使用qq微信,但是qq微信的文件传输有时候真是,...

文件传输工具有哪些?这3款堪称办公必备!

在不同设备间,想把文件从一台设备传输到另一台,尤其是大体积文件,更是免不了用到文件传输工具,可以说文件传输工具已成为提升效率的关键载体。面对海量文档、设计素材、会议纪要的流转需求,传统邮件附件、U盘拷...

小白也能用的跨网文件交换系统!10款简单易上手的文件摆渡工具

跨网文件交换系统对于需要频繁在不同网络环境中进行文件共享的用户来说至关重要。以下是10款简单易上手的文件摆渡工具,适合小白用户使用,帮助他们高效地分享和传输文件。10款简单易上手的跨网文件交换工具1....

取消回复欢迎 发表评论: