ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MUI 文档重构深度解析:从“一屋共住“到按产品拆分文档体系的架构实践

MUI 文档重构深度解析:从“一屋共住“到按产品拆分文档体系的架构实践 MUI 文档重构深度解析从一屋共住到按产品拆分文档体系的架构实践【免费下载链接】material-uiMaterial UI: Comprehensive React component library that implements Googles Material Design. Free forever.项目地址: https://gitcode.com/GitHub_Trending/ma/material-ui本文以 MUI 团队 2022 年发布的重磅博客《Our docs just got a major upgrade》为骨架结合material-ui仓库中文档系统的真实目录结构与源码实现梳理 MUI 如何将多个产品线Material UI、Base UI、MUI System、MUI X从共享一份文档重构为各产品拥有独立文档站点并在此过程中重新设计文档导航标识与站点级搜索排序。读完本文你将理解一套大型开源组件库做多产品文档分层时的关键决策点、URL 与内容组织方式以及如何用产品维度优化文档搜索的相关性与结果可读性。2022 年 4 月MUI 团队宣布了对文档体系的一次重大升级随着公司从只有 Material UI 一个旗舰产品发展为横跨 MUI Core 与 MUI X 两大产品线的组件生态所有产品的文档继续住在同一屋檐下已经越来越不利于开发者快速定位内容。本次重构的目标非常直接——让每一位使用 MUI 任意产品的开发者都能比以前更容易地精确找到你需要的东西。这一决策对应到仓库中就是今天我们看到的docs/下按产品拆分的文档数据目录、带产品标识符的文档导航以及按当前产品上下文重排的全局搜索。图重构后文档左上角新增的产品标识与切换菜单用于在不同产品的文档之间快速定位一、背景MUI 早已不只是 Material UI理解这次文档重构首先要理解 MUI 的产品版图。彼时 MUI 已经经历了品牌层面的变化——前一年公司层面由 Material-UI 更名为 MUI仓库内仍保留着 docs/pages/blog/material-ui-is-now-mui.md 这篇品牌重塑博客作为见证。品牌重塑之后文档所承载的内容范围也在快速膨胀。MUI Core基础组件库集合Material UI——实现 Google Material Design 规范的 React 组件库也是 MUI 的旗舰产品Base UI——无样式unstyled组件用于开发者搭建自己的设计系统从源码结构看Base UI 相关实现沉淀在独立的base-ui包形态中其文档数据在仓库中按独立产品维护MUI System——CSS 工具函数与样式体系用于快速排版与构建设计系统仓库中对应packages/mui-system/源码包文档示例统一收敛在docs/data/system/下borders、flexbox、grid、palette、spacing、typography 等均有独立页面。MUI X面向复杂场景的进阶组件MUI X Data Grid——功能丰富、可扩展、高性能的 React 数据表格MUI X Date and Time Pickers——用于选择日期与时间的交互控件。一个典型信号是日期时间选择器Date and Time Pickers在这一时期从实验性质的mui/lab中正式毕业晋升为 MUI X 的正式组件且仍然保持 MIT 许可开放可用。仓库中保存了对应详情的博客 docs/pages/blog/lab-date-pickers-to-mui-x.md。这条产品线扩张的路线图正是文档重构最根本的驱动力——当组件库从一套库裂变成多个各有定位的库时文档再混在一起用户就很容易在 Material UI 与 MUI X 的 API 之间迷失。二、核心变化一每个产品拥有独立的文档与 URL重构前所有产品内容集中在一个文档站点重构后所有 MUI 产品仍然位于mui.com主域名之下但每个产品各自拥有了独立的 URL 前缀与一套围绕自身内容组织起来的文档MUI CoreMaterial UI →/material-ui/Base UI →/base-ui/MUI System →/system/MUI XData Grid →/x/react-data-grid/Date and Time Pickers →/x/react-date-pickers/在今天的仓库中我们可以直接观察到这套 URL 结构在数据与页面两个层面的落地形态文档数据按产品拆分docs/data/下不再是单一扁平的文档树而是以产品为第一级划分——docs/data/material/维护 Material UI 的全部指南与组件文档内部还细分出getting-started/、customization/、components/、guides/、migration/、experimental-api/等主题docs/data/system/维护 MUI System 的属性、间距、排版等文档MUI X 相关内容同样独立成区。每个产品都有自己独立的pages.ts/pagesApi.js来声明导航页表。页面路由按产品分组docs/pages/下对应出现了material-ui/、system/、x/等以产品命名的页面目录另有docs/pages/404.tsx、docs/pages/_app.tsx等框架性入口负责整体壳层。左上角的产品标识与导航入口为了让我现在看的是哪个产品的文档一目了然重构在文档站点的左上角加入了产品标识符与下拉切换菜单见文首第一张截图。其作用是双重的明确上下文进入页面即提示用户当前处于哪个产品空间避免跨产品查找时产生这说的是 Material UI 还是 MUI X的困惑快速切换需要查看另一个产品文档时不必回到首页或手动改 URL从左上角即可跳转。三、核心变化二搜索体验的重构——按产品上下文排序并打标签文档拆分带来的最直接收益体现在搜索上。本次重构对全局搜索做了两项关键改进搜索结果按当前查看的产品排序。例如当你在 Material UI 文档中按下 ⌘KWindows 上为 CtrlK呼出搜索并输入关键词时返回结果的大多数将来自 Material UI而当你停留在 MUI X 文档时排在前面的则主要是 MUI X 的内容。为结果增加产品标签。Material UI 与 Base UI 的结果会带上明确的所属产品标签解决这两个库结果相似、难以分辨该引用哪一个 API的痛点。第二张截图展示了搜索结果中每个条目下出现的产品标签图重构后的搜索结果会按条目标注其所属的产品如 Material UI 与 Base UI结果归属一目了然在仓库源码中这套产品感知的搜索实现可以在 AppSearch.tsx 中看到具体支撑它基于 Algolia DocSearch 构建引入了docsearch/react的DocSearchModal与键盘快捷键useDocSearchKeyboardEvents并围绕产品做了大量定制——启动屏Start Screen按产品分组给出快捷入口例如 Material UI 分类下列出 Installation、Components、Example projects、Templates 等直达链接MUI X 分类下则有 Overview 等入口同时引入 convertProductIdToName 这样的工具函数将内部的产品 ID 映射为可展示的产品名称供结果标注使用。文件顶部还引入了Chip组件mui/material/Chip从实现层面印证了产品标签确实是作为搜索结果上的可视元素渲染的。此外从useRouter、PageContext、useDocsConfig等依赖可以推断搜索行为会根据当前所在页面路由的上下文决定结果排序与展示策略。四、副产物MUI X 搜索结果质量的显著跃升文档拆分之前跨产品的文档混排使 MUI X 的搜索质量受损严重。博客给出了一个非常直观的对比过去在搜索框里输入pagination返回结果先是 Material UI 的分页Pagination组件然后才是 Data Grid 的分页功能——对于一个想给 Data Grid 配分页的开发者来说这种排序显然是低效的。重构前一次针对pagination的搜索Material UI 组件结果挤占了 Data Grid 功能结果之前的位置图重构前在全部文档范围内搜索pagination先返回的是 Material UI 的分页组件Data Grid 的分页功能结果排在其后重构后停留在 MUI X 文档环境下搜索返回的结果只聚焦 Data Grid 自身的分页功能不再混入 Material UI 同名组件图重构后停留在 MUI X 文档区搜索pagination结果只与 Data Grid 分页功能相关命名冲突带来的噪音被消除这个案例清晰地说明了产品感知的搜索排序的价值搜索关键词常常是多产品共用的通用概念分页、表格、弹窗、输入……只有让结果与用户当前所处的产品上下文对齐才能把相关落到实处。值得一提的是这类通用词冲突在今天的文档中依然存在例如 Material UI 与 Base UI 在组件名上大量重叠因此结果上的产品标签与上下文排序并不是一次性补丁而是需要长期维护的文档基础设施能力。五、展望独立文档让产品文档自身成为活示例博客在结尾给出了这次拆分在中长期的两层收益随产品成长持续受益每个产品都在独立扩充——MUI X 持续加入新组件Data Grid、日期选择器等Base UI 也在演进。独立文档让各产品新增内容的边界清晰、互不干扰避免了所有内容挤在一个文档里越滚越乱的问题。让文档成为产品本身的最佳示例MUI 团队当时正在推进第二个设计系统包文档工程预览项目。一旦每个产品的文档站点可以用它自己默认的样式体系来构建那么文档本身就自然成为该组件库的示范应用——这比任何单独的示例页都更有说服力也反过来驱动了组件库的可用性与可访问性。从仓库现状看这一方向的后续影响相当深远今天的docs/中已经能看到 Material UI、MUI System 等站点共用由packages-internal/core-docs/包含 AppLayout、MarkdownDocs、Demo 等通用文档基建驱动的文档框架同时不同产品的数据与页面保持独立二者之间形成了清晰的共享外壳 独立内容的平衡——这恰恰是 2022 年这次文档重构奠定下来的总体架构。结语与反馈途径综上MUI 2022 年的文档重构可以提炼为三个可复用的方法论内容按产品分域当多套组件库共存于同一组织时文档数据、路由与导航应跟随产品拆分从物理上消除内容混淆搜索按上下文加权让搜索排序感知用户当前所在的产品空间并把归属标签直接渲染到每条结果上文档即产品演示让每个产品的文档用该产品自身的默认样式去构建把用文档展示产品作为长期演进目标。如果你在使用这套文档体系时遇到问题或有改进建议欢迎在material-ui仓库的 issues 区提交反馈并在标题前加上[docs]前缀以便维护团队第一时间识别为文档相关问题反馈入口对应的页面骨架可参考 docs/pages/blog/docs-restructure-2022.js 与 TopLayoutBlog 等博客渲染链路。【免费下载链接】material-uiMaterial UI: Comprehensive React component library that implements Googles Material Design. Free forever.项目地址: https://gitcode.com/GitHub_Trending/ma/material-ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表