Thành phần Material cho Web so với Angular Material 2 [đã đóng]


75

Gần đây, dự án kế nhiệm MDL (Material Design Lite) đã được khởi chạy dưới dạng Thành phần Vật liệu cho Web . Một trong những mục tiêu của nó là "Tích hợp liền mạch với các thư viện và khuôn khổ JS khác".

Có một dự án khác là Angular Material2 cung cấp các thành phần thiết kế material design dành riêng cho Angular (v2 +).

Cả hai dự án đều đang tạo các thành phần UI dựa trên material design . Ngoài ra, chúng có bộ thành phần tương tự sẵn sàng / đang hoạt động-phát triển và cùng một bộ thành phần sắp ra mắt (được liệt kê ở đâyở đây ).

Ai đó có thể vui lòng giúp tôi hiểu sự trùng lặp giữa 2 dự án và tôi nên chọn cái nào cho các dự án mới?

Ở cấp độ cơ bản, tôi hiểu Angular Material2 sẽ tích hợp liền mạch và chặt chẽ hơn với các dự án Angular, trong khi Material Components cho Web sẽ cung cấp các hook cho nhiều khung JS sử dụng. Nhưng tôi không thấy lý do cho sự chồng chéo và cái nào sẽ có nhiều động lực hơn (đọc thêm thành phần).


Xin lưu ý rằng Angular Material cho Angular 1.x là một thực thể khác biệt với Angular Material2 cho Angular 2+. Ngoài ra, Thành phần Vật liệu cho Web khác với Thành phần Vật liệu / Giấy Polymer là Thành phần Web dựa trên tiêu chuẩn. Không có công nghệ nào được thảo luận trong câu hỏi này đủ điều kiện là "thành phần web" dựa trên tiêu chuẩn.
Splaktar

1
đồng ý .. cảm ơn cho chỉnh sửa
DeepakV

1
Đừng sử dụng vật liệu có góc cạnh 2. Nó thật tồi tệ. Tôi xem qua bài đăng của bạn vì tôi đang tìm kiếm một giải pháp thay thế cho vật liệu góc cạnh 2. Tài liệu vuetify của Checkout Vue.js. Vật liệu dạng góc nên trông như vậy.
CENT1PEDE

1
Phải đồng ý với Cent1pede. Các tài liệu cho góc Chất liệu Thiết kế 2 là crap tuyệt đối
Steven Hoff

Câu trả lời:


54

Tiết lộ đầy đủ: Tôi làm về Material Components cho web , vì vậy ý ​​kiến ​​của tôi có thể hơi thiên lệch :)

TL; DR sử dụng bất kỳ thư viện nào giúp bạn xây dựng giao diện người dùng của mình theo cách hiệu quả nhất có thể hoặc sử dụng chúng song song với nhau. Thủ tục thanh toánví dụ tích hợp angle2 của chúng tôi angle-mdc-web để xem cách quấn một thành phần MDC-Web bằng ng2.

Mục tiêu của Thành phần Vật liệu cho web (viết tắt. MDC-Web ), như đã được ám chỉ, là tạo ra một triển khai chính tắc của các thành phần Thiết kế Vật liệu cho toàn bộ nền tảng web. Angular / material2 là một thư viện tuyệt vời - nhiều người trong chúng tôi trong nhóm Material Design, bao gồm cả tôi, đã đóng góp vào nó - nhưng nó bị loại trừ đối với các ứng dụng không phải là angle2. Ngoài ra, các thư viện và khuôn khổ không phải của google như React, Aurelia, Vue và những người khác không có giải pháp chính thức phù hợp với nhu cầu của họ.

Điều đó đang được nói, Angular2 thuộc phạm vi của chúng tôi về "toàn bộ nền tảng web" và chúng tôi chắc chắn muốn hỗ trợ nó vì điều đó. Ở giai đoạn này trong cả hai dự án, chúng tôi có thể có một số thành phần bạn cần mà angle / material2 không có, hoặc ngược lại. Tôi khuyến khích bạn sử dụng bất kỳ thư viện nào giúp bạn hoàn thành mục tiêu của mình theo cách tốt nhất có thể. Đó có thể là angle / material2, có thể là MDC-Web, hoặc thành thật mà nói, nó có thể là cả hai. Ví dụ: bạn có thể sử dụng thành phần đã chọn của chúng tôi cùng với các thành phần của side material2 và mọi thứ sẽ hoạt động tốt. Như đã đề cập trong TL; DR, angle-mdc-web là một thư viện có đầy đủ tính năng bao bọc MDC-Web trong một API angle2 + thành ngữ.

Lưu ý cuối cùng, MDC-Web là thư viện duy nhất được phát triển bởi chính nhóm Material Design. Bởi vì điều này, chúng tôi có thể cộng tác và lặp lại với những người cùng tác giả thông số Material Design.


36
Vì vậy, bản thân Google vẫn chưa có một hướng đi rõ ràng. Chúng tôi vẫn phải đợi cho đến khi một người quản lý quyết định cái nào phải bị giết.
neclepsio

11
Cách tôi thấy hiện tại là sẽ tốt hơn rất nhiều cho họ (và cho chúng tôi, các nhà phát triển) nếu tập trung nhiều nguồn lực hơn vào MDC-Web và thay đổi dự án material2 thành một dự án trình bao bọc / bộ điều hợp ng2 đơn giản cho MDC-Web .
Rodrigo Quesada

1
Hãy ví dụ phức tạp hơn để thực hiện MDC-web với angular2
Vlad

1
Cũng là một ví dụ điển hình github.com/trimox/angular-mdc-web
Vlad,

2
Có thật không? Vue? Hãy xem vuetifyjs.com này, đó là khung tài liệu hoàn hảo.
CENT1PEDE

18

Cập nhật (ngày 16 tháng 3 năm 2018):

Từ các nhận xét được cung cấp bởi @elDuderino Material2 dường như có một cách để tùy chỉnh. Câu trả lời được cung cấp là trước khi Material có cdk ..

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

Cả hai khuôn khổ hiện đang rất trưởng thành. Tôi sử dụng cả hai trong số chúng trong các dự án khác nhau. Tôi chỉ mất một tuần để di chuyển một dự án từ khuôn khổ này sang khuôn khổ khác. Vì vậy, tôi khuyên bạn nên thử cả hai và xem cái nào bạn thấy thoải mái.


Tôi sẽ chia sẻ kinh nghiệm của tôi. Cố chấp và thiên vị của nó. Thích được sửa chữa.

Chúng tôi đang bắt đầu từ đầu và sử dụng Angular. Chúng tôi quyết định đi với Material. Tôi bắt đầu tìm kiếm một khung công tác tốt hơn và thử tất cả chúng: Materialize, MDL, Angular Material 2 và cuối cùng là MDC cho web.

Đây là những quan sát của tôi, đặc biệt là đối với Material2 so với MDC cho Web.

Material2

  • Ưu điểm
    • Readymade. Mọi thứ đều có sẵn và sẵn sàng để bắt đầu làm việc
    • Kiến trúc gần với Angular
  • Nhược điểm

    • Danh sách thành phần vẫn chưa hoàn thành (chúng sẽ tăng dần theo thời gian, vì vậy vẫn ổn)
    • Tùy chỉnh là không thể

    Tôi biết chúng ta có thể thêm các chủ đề, vậy thôi. Tất cả HTML và CSS cho các thành phần được thêm vào Angular Components. Vì vậy, nó được biên dịch dưới dạng JavaScript và áp dụng trong thời gian chạy. Vì vậy, không có cách nào để ghi đè hành vi. Tôi đã cố gắng trong một tuần và không thể làm được.

    Đây là những câu hỏi tôi đã hỏi (một trong số chúng được đánh dấu là đóng lại vì có vẻ như nó đang hỏi ý kiến ​​-.-)

    Cách tùy chỉnh Angular Material 2

    Cách mở rộng kiểu thành phần góc

    Tất nhiên họ không nhận được bất kỳ câu trả lời nào và tôi không thể tùy chỉnh chúng. Nếu tôi sai, xin vui lòng chỉ dẫn cho tôi.

Kiểm tra cập nhật được cung cấp ở trên

MDC cho Web

  • Nhược điểm

    • Không có sẵn cho Angular

    Chúng tôi không thể bắt đầu sử dụng nó ngay lập tức nếu bạn muốn làm theo cách Angular. Cần viết một trình bao bọc cho Angular cho mỗi thành phần. Có thể mất một số nỗ lực. Nhưng mọi nhóm đều có thể dành thời gian để tùy chỉnh và có những nỗ lực của bên thứ ba để làm cho nó dễ dàng hơn. Nếu không nên làm điều đó theo cách góc cạnh, tôi tin rằng chúng ta có thể bắt đầu mà không cần bao bọc.

    • Danh sách thành phần vẫn chưa hoàn thành (chúng sẽ tăng dần theo thời gian, vì vậy không sao)
  • Ưu điểm

    • Chung chung, không ràng buộc vào khuôn khổ. Luôn luôn an toàn để đầu tư vào.
    • Đóng góp nhiều hơn, vì các nhà phát triển khung công tác khác cũng sử dụng nó. Theo thời gian, nó nhận được nhiều đóng góp hơn và bằng chứng trong tương lai (gần như)
    • Hoàn toàn có thể tùy chỉnh.
    • Có vẻ như chỉ có khuôn khổ Nhóm thiết kế material design liên quan trực tiếp với
    • Có thể sử dụng kiến ​​thức / phong cách cho thiết bị di động.
    • Tài liệu là tuyệt vời. Có vẻ như rất nhiều công sức và thời gian được bỏ vào.

1
Về việc tùy chỉnh Material2, họ dựa vào việc bạn thiết lập các biến và sử dụng mixin. Xem Chủ đề các thành phần tùy chỉnh của bạn và việc sử dụng các biến trong mã nguồn (ví dụ: thanh công cụ )
Alex Klaus

@AlexKlaus Nếu mình không nhầm thì link bạn cung cấp chỉ để thay đổi màu sắc (Theme) không thay đổi CSS khác của các thành phần. @angular/cdkTôi đoán họ đã nghĩ ra để tùy chỉnh các thành phần. Tôi cần xem xét nó và cập nhật câu trả lời của mình.
Vamshi

2
Tôi muốn chỉ ra rằng cả hai đều được viết theo một cách cứng nhắc, vì vậy ngoài việc thay đổi chủ đề (đọc là "màu sắc"), không có gì nhiều bạn có thể làm một cách an toàn. Bạn đã gọi MDC cho Web là "hoàn toàn có thể tùy chỉnh", nhưng bạn thậm chí không thể làm những việc đơn giản như thay đổi chiều cao thanh công cụ (xem tại đây câu trả lời của họ về một yêu cầu tính năng như vậy).
Alex Klaus

Điểm bán hàng chính của họ là tuân thủ nghiêm ngặt thiết kế material design, vì vậy rất ít thứ khó bị thay thế. Nhưng khi tôi nói "hoàn toàn có thể tùy chỉnh", ý tôi là chúng ta có thể thay đổi chúng trong thành phần tùy chỉnh được tạo ra từ nó. Trong trường hợp của Material, nó thậm chí không được thêm vào trong scss mà chúng được mã hóa cứng trong javascript và hoàn toàn không thể ghi đè, tôi cảm thấy rất khó để mở rộng các thành phần góc cạnh. Bạn có thể xem những câu hỏi tôi đã hỏi ..
Vamshi

Có thể việc triển khai đã thay đổi kể từ khi bạn cung cấp câu trả lời của mình, nhưng nói rằng Angular Material là không thể tùy chỉnh là hoàn toàn sai. Họ thậm chí có một trang dành riêng cho này trong tài liệu: material.angular.io/guide/customizing-component-styles
elDuderino

4

Đối với những người xem xét Angular Material 2, Trình chỉnh sửa chủ đề / Plugin Sketch Material và công cụ Thư viện chỉ khả dụng cho MDC. Tôi đang đi trên con đường tương tự và tôi đã bắt đầu với Angular Material 2 và với phần giới thiệu gần đây về Angular Ivy, tôi không chắc nhóm sẽ nỗ lực như thế nào trong Angular Material 2. Tôi đang chuyển sang MDC, là một đặt cược an toàn.

Từ Readme gần đây:

Nội dung cấp cao được lên kế hoạch cho Q1 → Q2 2019 (tháng 1 - tháng 6):

  • Phần lớn nhóm Angular Material đang cho nhóm framework hỗ trợ Ivy mượn. Chúng tôi đã và đang sử dụng các bài kiểm tra Angular CDK và Angular Material để xác thực các đường dẫn mã cũng như giúp gỡ lỗi các sự cố khi chuyển các ứng dụng của Google sang quy trình kết xuất mới.
  • Chúng tôi cũng đang làm việc với nhóm Material Design về chiến lược cộng tác sâu hơn. Chúng tôi sẽ có nhiều điều hơn để chia sẻ về điều này khi các kế hoạch của chúng tôi được hoàn thiện hơn.
  • Các loại sửa lỗi và cải tiến tính năng nhỏ.
  • Thiết kế các cải tiến API cho thành phần cây để cải thiện công thái học.

2

Có vẻ như nhóm Angular Material có kế hoạch cộng tác với nhóm MDC:

Nội dung cấp cao được lên kế hoạch cho Quý 4 năm 2018 (Tháng 10 - Tháng 12):

  • Cải thiện công cụ xây dựng và tự động hóa của riêng chúng tôi
  • Sửa lỗi và giảm một số nợ kỹ thuật bên trong Google
  • Lập kế hoạch dài hạn về cách cộng tác với nhóm MDC Web
  • Thiết kế để cải tiến bảng nâng cao (thay đổi kích thước cột, chỉ thị lựa chọn, chỉnh sửa nội tuyến)

( ĐỌC SÁCH )

Điều này đã được thêm vào readme khoảng 20 ngày trước (10 tháng 10 năm 2018).
Vì vậy, rất có thể, trong tương lai Angular Material chỉ là một loại trình bao bọc Angular hoặc triển khai Angular của MDC cho Web.


-1

Angular Material 2 vẫn còn lỗi thời và không triển khai đúng thông số kỹ thuật của material. Đừng sử dụng nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.