Material Web Components 路线图解读:维护模式下的规划、方向与已交付能力
2026/9/23 11:31:19 网站建设 项目流程

Material Web Components 路线图解读:维护模式下的规划、方向与已交付能力

【免费下载链接】material-webMaterial Design Web Components项目地址: https://gitcode.com/gh_mirrors/ma/material-web

导读

本文基于 Material Web Components(MWC)官方 docs/roadmap.md,完整解读该项目的开发路线图:包括项目当前所处的维护模式状态、曾经规划的未来方向(新组件、Design Token 扩展、密度与间距、TSX 支持、Material 布局),以及已经完成并交付的历史里程碑。读完本文,你将能够:准确判断 MWC 当前是否适合引入新组件需求;快速对照仓库labs/tokens/目录,定位各规划方向在源码中的实际落地情况;并了解从 Material 1.0 至今,该项目在组件、主题与无障碍方面已经具备的成熟能力边界。

一、当前状态:MWC 已进入维护模式

路线图在 "Current" 一节中明确指出:Material Web Components 目前处于维护模式(maintenance mode)

这意味着:

  • 当前没有规划任何新功能或新组件的开发工作;
  • Bug 修复或其他形式的贡献(Pull Request)仍可能被接受,但会逐案评估(case-by-case basis);
  • 路线图中 "Future" 一节所列的所有项目,仅仅是"曾经计划过"的内容,在维护模式下不再安排实施

对于正在选型的团队,这一状态是评估依赖风险的关键信息:MWC 更适合作为核心 UI 基础设施被稳定使用,而非期待其持续快速迭代的功能来源。仓库中 CHANGELOG.md 记录了各版本的变更历史,可以据此了解项目的演进节奏。

二、曾经规划的未来方向(Future)

维护模式下这些项目不再排期,但它们完整勾勒出 MWC 的设计意图与未竟方向,也为社区 Fork 或二次开发提供了蓝图。

2.1 尚未构建的新组件清单

路线图列出了 17 个"尚未构建"的组件,覆盖了 Material 3 规范中大量高阶组件:

组件说明
Autocomplete自动补全输入
Badge徽章/角标
Banner横幅通知
Bottom app bar底部应用栏
Bottom sheet底部抽屉面板
Card卡片容器
Data table数据表格
Date picker日期选择器
Navigation bar导航栏
Navigation drawer导航抽屉
Navigation rail导航侧栏
Search搜索框
Segmented button分段按钮
Snackbar轻提示条
Time picker时间选择器
Top app bar顶部应用栏
Tooltip悬浮提示

仓库现状对照:虽然这些组件未进入正式发布,但其中相当一部分已经在labs/目录中以"实验组件"形式存在,例如 Badge、Card、Navigation bar、Navigation drawer、Navigation tab、Segmented button、Item 等。同时,tokens/_index.scss 中也已包含md-comp-badgemd-comp-navigation-barmd-comp-navigation-drawermd-comp-outlined-segmented-button等对应的设计 Token 定义。

需要注意 labs/README.md 中的明确警告:实验特性不推荐用于生产环境,且可能发生不递增主版本号的破坏性变更。因此引用这些预览实现时,应将其视为"方向验证"而非稳定 API。

2.2 扩展 Material Design Token 体系

路线图规划了两个 Token 相关方向:

  1. 补充 shape(形状)与 motion(动效)系统 Token,用于构建更具表现力的 Material 体验;
  2. 让 Design Token 更易用,例如将 Material 的 typescale(字体等级)、shape(形状)与 color(颜色)便捷地应用到开发者自己的组件上。

仓库现状对照:Token 体系的骨架已经相当完整。tokens/目录按 "md-ref-"(参考层)与 "md-sys-"(系统层)组织,例如:

  • tokens/_md-sys-shape.scss:定义corner-extra-largecorner-mediumcorner-full等角半径 Token,并区分 supported(受支持)与 unsupported(不受支持,如corner-extra-large-top等单角变体)两类;
  • tokens/_md-sys-motion.scss:转发versions/v0_192/md-sys-motion提供动效 Token;
  • tokens/_md-sys-color.scss、tokens/_md-sys-typescale.scss 等对应颜色与字体系统。

此外,labs/gb/styles/m3.scss 统一引入了 color、elevation、icon、motion、shape、space、typography 全套 Token,展示了"把 Material 系统能力应用到自有组件"的具体集成方式。

2.3 密度与间距 Token(Density and spacing tokens)

密度(Density)允许组件在更大的显示设备上占用更少的垂直空间。路线图指出:虽然 MWC 已具备部分 spacing token,但要全面支持各组件的高密度(compact)形态,还需要一套综合性间距系统

仓库现状对照:labs/gb/styles/space/md-space-tokens.scss 已经给出了一套以 8px 为基准单位的间距 Token 方案:

@layer md.sys.space { :root { --md-sys-space-unit: 8px; --md-sys-space-0: calc(var(--md-sys-space-unit) * 0); --md-sys-space-25: calc(var(--md-sys-space-unit) * 0.25); --md-sys-space-50: calc(var(--md-sys-space-unit) * 0.5); --md-sys-space-100: var(--md-sys-space-unit); --md-sys-space-200: calc(var(--md-sys-space-unit) * 2); /* ... 直至 --md-sys-space-900 */ } }

可以看到,该实现通过单一--md-sys-space-unit基准变量派生全部间距档位,这正是路线图所描述的"综合 spacing system"的实验形态。

2.4 创建 TSX 组件

TSX 是 TypeScript 对 JSX 的语言扩展,广泛用于 React 等框架生态。路线图希望让 MWC 在 TSX 场景下"更轻松、更无缝"地使用。

从仓库现状看,tsconfig.base.json 与各组件源码(如 button/button.ts)均基于 Lit 的@customElement装饰器注册自定义元素,这类 Web Component 天然可以在 React/TSX 中以原生标签方式引用;但 TSX 特有的属性类型推导、事件绑定体验优化仍是路线图想要进一步解决的问题。

2.5 探索 Material Design 布局

路线图强调"组件只是构建完整 Material 应用的一部分",计划探索如何支持遵循 Material 布局模式(layout patterns)的应用构建。这意味着 MWC 的长期愿景不只是提供孤立的 UI 组件,而是延伸到页面级的布局与排版能力。该方向目前仍停留在规划层面,仓库中尚无对应的正式实现。

三、历史里程碑:已完成并交付的能力(Past)

3.1 无障碍最佳实践(2024 Q1 完成)

路线图声明 MWC 组件致力于帮助开发者构建无障碍体验,并完整支持以下 5 个屏幕阅读器

  • VoiceOver(Apple 平台)
  • Talkback(Android)
  • ChromeVox(ChromeOS)
  • JAWS(Windows)
  • NVDA(Windows)

仓库现状对照:无障碍能力并非停留在口号层面。internal/aria/目录提供了 aria.ts 与 delegate.ts 等 AOM(Accessibility Object Model)辅助模块及对应测试;组件内部大量使用aria-*属性与角色管理,例如 button/internal/button.ts、dialog/internal/dialog.ts 均包含完整的键盘交互与 ARIA 状态处理。

3.2 Cards 与更多(2023 Q4 完成)

该里程碑交付内容如下:

  • 组件:Card 预览版本(✅)——对应仓库 labs/card/ 目录中的elevated-cardfilled-cardoutlined-card三种形态,例如 elevated-card.ts 注册md-elevated-card自定义元素;
  • 功能
    • 阻止事件默认行为(🟡 部分完成):"我们修复了大量 bug,但仍存在改进空间";
    • 尺寸跟踪(✅):docs/size.md 记录了组件包体积指标——按 bundle(单个.js文件,包含组件所需全部 JS 与 CSS)分别跟踪gzip(压缩传输体积,影响弱网下载时长)、minified(压缩未打包体积,影响页面可交互时长)等指标;
    • 文档与示例(✅)。

3.3 Material 1.0(2023 Q3 完成)

Material 1.0 是 MWC 的一个重要能力基线,交付内容包括:

  • 主题能力
    • 颜色主题(Color theming)
    • 字体主题(Typography theming)
  • 组件全集(20 个)

Button、FAB、Icon button、Checkbox、Chips、Dialog、Divider、Elevation、Focus ring、List、Menu、Progress indicators、Radio、Ripple、Select、Slider、Switch、Tabs、Text field。

仓库现状对照:这些组件在当前仓库中均以稳定实现存在,每个组件目录都包含公开入口、internal/内部实现、样式文件、demo/示例与测试文件,例如 button/、checkbox/、dialog/、tabs/ 等;对应的组件设计 Token 也全部收录于 tokens/_index.scss(从md-comp-buttonmd-comp-text-field共 40+ 个组件 Token 模块)。主题化文档见 docs/theming/README.md。

四、路线图对照表:方向与仓库落地位置

路线图方向状态仓库落地位置
维护模式进行中README.md、CHANGELOG.md
新组件(Badge/Card/Navigation 等)部分以实验形态存在labs/
Shape/Motion Token 扩展骨架已就绪tokens/_md-sys-shape.scss、tokens/_md-sys-motion.scss
密度与间距 Token实验方案存在labs/gb/styles/space/md-space-tokens.scss
TSX 支持规划中tsconfig.base.json
Material 布局规划中暂无对应实现
无障碍最佳实践已完成(Q1 2024)internal/aria/
Cards 与更多已完成(Q4 2023)labs/card/、docs/size.md
Material 1.0已完成(Q3 2023)tokens/_index.scss 及各组件目录

五、对开发者的实践启示

  1. 稳定使用优先:维护模式意味着 API 相对稳定、修复按需进行,适合将 MWC 作为长期依赖;但引入新组件需求时应优先评估社区替代方案或自行扩展。
  2. labs 组件需谨慎:路线图中"未来组件"的多数已在 labs/ 有预览实现,可在原型阶段试用,但需接受其"不保证主版本兼容"的破坏性变更风险。
  3. Token 是定制化主入口:无论是颜色、字体、形状还是动效,tokens/ 都是统一的设计变量来源;间距方向可参考 md-space-tokens.scss 的基准单位方案。
  4. 无障碍能力有测试保障:5 大屏幕阅读器支持与internal/aria/模块、组件测试共同构成了 MWC 的可访问性基线,集成时应避免破坏默认的键盘导航与 ARIA 语义。

总体而言,这份路线图描绘的是一条"从 Material 1.0 基础组件 → 高阶组件与 Token 生态 → 布局与框架集成"的演进路径;尽管项目当前已收敛为维护模式,其已交付的组件库、Token 体系与无障碍能力仍然构成了一个完整、可用的 Material 3 Web 实现基座。

【免费下载链接】material-webMaterial Design Web Components项目地址: https://gitcode.com/gh_mirrors/ma/material-web

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询