【问题标题】:Why was material design lite(MDL) deprecated with MDC?为什么 MDC 不推荐使用 Material Design lite(MDL)?
【发布时间】:2025-12-12 12:25:07
【问题描述】:

哪个3 high-level goals 失败了:

  • 生产就绪的组件,以单点方式消耗
  • 一流的性能并遵守 Material Design 指南
  • 与其他 JS 框架和库的无缝集成

或者是否还有其他原因导致弃用 MDL?

【问题讨论】:

  • 这是 MDL v2,他们只是改了名字。
  • 我想语法很讨厌?例如:<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect">Like on Facebook</button> 与 MaterializeCSS 相比:<a class="waves-effect waves-light btn">Like on Facebook</a>

标签: material-design material-design-lite material-components


【解决方案1】:

这里是 MDC Web 的核心团队成员之一。如果您对从 MDL 切换到 MDC Web 感到好奇,我们有一个 migration guide

我们通过迁移到 MDC Web 完成的一件事是 JavaScript 组件的新架构。 MDC Web 的构建方式完全与框架无关,因此可以在惯用的 JS、React、Angular 等中使用相同的代码库……我们还以可以按点菜方式安装的方式发布组件,不过如果你想抓住一切,那就是 164K。

基本上,我们通过将关注点分成两个概念来实现这一点:组件和基础。 Component 是即用型 JavaScript 组件,而 Foundation 包含所有共享的 UI 代码。 Foundation 对于 React/Angular/Vue 等框架的低级使用以及更复杂的渲染逻辑非常有用。

最后一个难题是适配器的概念。在 MDC Web 中,适配器是传递给 Foundation 的配置对象。这将包括围绕数据绑定、模板、键/输入处理等的任何逻辑......这一切归结为一组逻辑默认值,如果您使用像 React 或 SSR 这样的框架,这些默认值可以被覆盖事情与他们在浏览器中的 vanilla javascript 中的完成方式不同。

最后,如果有人有兴趣与我们聊天,我们有一个public Discord server。我们很乐意回答任何实施问题或解决任何问题。

【讨论】:

  • 那 164KB 会是 min + gzip 吗?
【解决方案2】:

MDL 只是未能以点菜方式轻松消费。

虽然存在多个问题,但说它未能与其他 JS 框架和库无缝集成有点苛刻。

Web 的材料组件 (MDC-Web) 有望易于迁移。时间会证明一切。

【讨论】: