dumi | 青训营笔记

214 阅读2分钟

这是我参与 [第五届青训营] 伴学笔记创作活动的第13天

组件库项目选定dumi作为工具,因此学习dumi的用法

dumi介绍

传统前端开发模式将一个系统作为整块应用,随着业务拓展或更新,系统复杂度提升,一个小改动常引起整体逻辑的修改,导致代码可维护性低

React可以将系统不同的板块分为一个个组件,将系统变为各个组件的拼接。同时组件化开发可以实现组件复用,降低了功能的重复编写,提高了开发效率。将功能分为各个组件也能以组件为单位提高代码可维护性

基于组件化开发的思想编写组件库,使用组件库,可以进一步减少重复代码的编写

目前组件库编写工具常见的有docz、storybook等,而dumi虽然只支持React,但是轻量级,上手快,开箱即用。引入模块就在代码中,且自动生成api。

实操

生成项目

npx create-dumi

在src目录下创建组件文件夹

image-20230201221511484.png

//index.tsx
import React, { FC } from 'react';
​
type props = { content?: string; color?: string };
​
//创建函数组件
const Button: FC<props> = ({ content, color }) => {
  return <button style={{ color: color }}>{content}</button>;
};
​
//导出组件
export default Button;

从【项目】导入组件,然后导出组件——这样操作后就能在文档中看到示例

//index.md
# Button
​
This is an example component.
​
```tsx
import { Button } from 'test_1';
​
export default () => <Button content="hello" color="red" />;
```

image-20230201222314040.png

在src下的index.ts中导出组件

//src/index.ts 即组件库入口文件
export { default as Button } from './Button';
/*在该文件导出组件后相当于让dumi项目拥有了该组件
  也就是这个test_1项目有了组件Button */

提供组件API

只需在组件的md文件中加上 <API><API/>即可

image-20230201223033520.png

填写API信息

Button/index.tsx 中导出interface即可在API中填写说明信息

export interface props {
   /**
   * 可以这样写属性描述
   * @description       也可以显式加上描述名
   * @description.zh-CN 还支持不同的 locale 后缀来实现多语言描述,使用 description 兜底
   * @default           支持定义默认值
   */
  content: string;
  color: string;
}

总结

dumi是专为React框架设计的组件库文档设计工具,文档编写就在代码开发中,自定义的语法和规则较少,能够做到开箱即用,简化了组件库文档的开发——只需要注意dumi项目结构和路由即可