Material Web 组件与 Angular Material 2

Material Components for the Web vs Angular Material 2

最近,MDL(Material Design Lite)项目的后继项目作为 Material Components for the Web 启动。它的目标之一是 "Seamless integration with other JS frameworks and libraries"。

还有另一个项目 Angular Material2 专门为 Angular (v2+) 提供 material 设计组件。

这两个项目都在创建 material 基于设计的 UI 组件。此外,它们具有相似的组件集 ready/in-active-development, and same set of components as coming-soon (listed here and here).

谁能帮我理解两个项目之间的重叠以及我应该为新项目选择哪个?

在基本层面上,我理解 Angular Material2 将与 Angular 项目更无缝、更紧密地集成,而 Material Web 组件将提供供多个 JS 框架使用的钩子。但我看不出重叠的原因,也看不出哪一个会有更大的动力(阅读更多组件)。

Full disclosure: I work on Material Components for the web, so my opinion may be a bit biased :)

TL;DR 使用可以帮助您以最有效的方式构建 UI 的库,或者并排使用它们。查看我们的 angular2 集成示例 angular-mdc-web 了解如何使用 ng2 包装 MDC-Web 组件。

Material Web 组件(缩写 MDC-Web)的目标,如前所述,是创建 Material 为整个网络平台设计组件。 Angular/material2 是一个优秀的库——我们 Material 设计团队中的许多人,包括我自己,都为它做出了贡献——但它对非 angular2 应用程序是排他性的。此外,非google库和框架,如 React、Aurelia、Vue 等,没有 官方解决方案来满足它们的需求。

也就是说,Angular2 属于我们 "entire web platform" 的范围,因此我们绝对希望支持它。在这两个项目的这个阶段,我们可能有一些您需要的组件 angular/material2 不需要,反之亦然。我鼓励您使用任何可以帮助您以最佳方式实现目标的库。这可能是 angular/material2,也可能是 MDC-Web,或者老实说,它可能是两者。例如,您可以将 我们的 select 组件 与 material2 的组件一起使用,并且一切正常。如 TL;DR 中所述,angular-mdc-web 是一个功能齐全的库,它将 MDC-Web 包装在惯用的 angular2+ API.

最后一点,MDC-Web 是唯一由 Material 设计团队自己开发的库。正因为如此,我们能够与编写 Material 设计规范的同一个人进行协作和迭代。

更新(2018 年 3 月 16 日):

从@elDuderino 提供的评论来看 Material2 似乎有办法自定义 .提供的答案是在 Material 有 cdk 之前..

https://material.angular.io/guide/customizing-component-styles

这两个框架现在都非常成熟了。我在不同的项目中使用它们。我只用了一周的时间就将一个项目从一个框架迁移到另一个框架。所以我建议两者都试一下,看看你觉得哪个舒服。


我会分享我的经验。它固执己见且有偏见。喜欢被纠正。

我们从头开始并使用 Angular。我们决定使用 Material。 我开始寻找更好的框架并尝试了所有框架:Materialize、MDL、Angular Material 2,最后是 MDC for web。

这是我的观察结果,尤其是 Material2 与 MDC for Web。

Material2

  • 优点
    • 现成的。一切都准备就绪,可以开始
    • 架构接近Angular
  • 缺点

    • 组件列表还没有完成(他们会随着时间的推移,所以没关系)
    • 无法自定义

    我知道我们可以添加主题,仅此而已。组件的所有 HTML 和 CSS 都添加到 Angular 组件中。所以它被编译为 JavaScript 并在运行时应用。因此,无法覆盖该行为。我试了一个星期,还是不行。

    这是我提出的问题(其中一个标记为关闭,因为它似乎是在征求意见 -.-)

    How to customize Angular Material 2

    How to Extend Angular Component style

    当然他们没有得到任何答案,我无法自定义它们。如果我错了,请指点我。

检查上面提供的更新

网络版 MDC

  • 缺点

    • Angular
    • 不可用

    如果您想 Angular 方式,我们不能立即开始使用它。需要为每个组件编写 Angular 的包装器。可能需要一些努力。但是每个团队都有时间进行自定义,并且 third party 努力让它变得更容易。如果可以不以 angular 方式进行,我相信我们可以在没有包装器的情况下开始。

    • 组件列表还没有完成(他们会随着时间的推移,所以没关系)
  • 优点

    • 通用的,不依赖于框架。投资总是安全的。
    • 更多贡献,因为其他框架开发人员也在使用它。随着时间的推移,它获得了更多的贡献和未来的证明(几乎)
    • 完全可定制。
    • 似乎只有框架 Material 设计团队直接参与
    • 也可以将 knowledge/styles 用于移动设备。
    • 文档很棒。看起来投入了很多精力和时间。

Angular Material 团队似乎计划与 MDC 团队合作:

High level stuff planned for Q4 2018 (October - Dec):

  • Improve our own build and automation tooling
  • Fix bugs and reduce some technical debt inside Google
  • Working on long-term plans on how to collaborate with the MDC Web team
  • Designs for advanced table improvements (column resize, selection directives, inline-edit)

(README)

这已在大约 20 天前(2018 年 10 月 10 日)添加到自述文件中。
因此,将来 Angular Material 很可能只是某种 Angular 包装器或 Angular Web MDC 的实现。

对于考虑 Angular Material 2 的人来说,Sketch Material Plugin/Theme 编辑器和 Gallery 工具仅适用于 MDC。我也是一样的,我是从Angular Material 2开始的,再加上最近在Angular Ivy上的介绍,不知道团队会在Angular Material 2. 我正在转向 MDC,这是一个安全的选择。

来自最近的自述文件:

2019 年第一季度→第二季度(1 月 - 6 月)计划的高级内容:

  • Angular Material 团队的大部分成员被借调到框架团队 帮助常春藤。我们一直在使用 Angular CDK 和 Angular Material 测试以验证代码路径以及帮助调试问题 将 Google 应用程序切换到新的渲染管道。
  • 我们还与 Material 设计团队合作制定更深入协作的策略。一旦我们的计划进一步推进,我们将在此分享更多信息。
  • 各种错误修复和次要功能改进。
  • 设计 API 增强树组件以改进 人体工程学。

Angular Material 2 仍然过时并且没有正确实现 material 规范。不要使用它。