MDC – Work with Framework & Customize
前言
在 MDC – Material Design, Angular Material, MDC, MWC, Lit 的关系 中, 我有提到基于 MDC 的 Framework 生态有多糟糕.
但它的一些架构设计出发点确实是为了 Framework 着想的. 这篇稍微看一看这部分.
参考
Github – Integrating MDC Web into Frameworks
Codelabs – MDC-112 Web:Integrating MDC with Web Frameworks
Simple Approach
有 2 种方法可以依赖 MDC. 第一种是简单的 wrap 一层. 把 HTML, CSS, JS 封装起来做一个调用就 ok 了.
Advanced Approach
第二种方法就麻烦多了. 首先必须了解 MDC 的架构.
Foundation
所有组件都有一个底层的体验实现, 它叫 XXXFoundation

里面封装了所有 Material Design 的概念.
比如, 当 input unblur 后, 会检查 validation, 如果有 error 会添加 invalid 的 class 到 text filed 上. 这个是 Material 的体验规范.
实现代码就写在 Foundation 里面. 如果想要改这方面的逻辑就需要继承 Foundation Class 做 override.
Adapter
所有组件都有一个底层的操作 Dom 实现. 它叫 XXXAdapter

adapter 主要是给 Foundation 消费的, Foundation 负责体验逻辑, 但它会调用 adapter 去操控 Dom, 它本身并不实现和依赖如何操作 Dom.
Component (e.g. MDCTextField)
组件是最上层的, 我们平常写代码就是 new MDCTextField(bindingElement) 这样.

组件有 2 大职责
第一就是封装了 Foundation, 曝露上层接口 (作为 Foundation 的 proxy)

第二是实现 adapter

adapter 就是大量的 Dom 操作接口

Angular Material FormField
我们拿 Angular Material 源码来看就可以看出它如何实现 MDC 了.

form-field.ts 取代了 MDC 的 mdc-textfield/component.ts.
所以复用的部分是在 Foundation. Adaptor 而 component 是没有复用 MDC 的.
MDC – Work with Framework & Customize的更多相关文章
- log4j输出到数据库(输出自定义参数、分级保存)
转载自:http://wallimn.iteye.com/blog/1525819 Log4J日志输出到数据库中,且保存些用户自定义的参数,如用户ID,且配置仅输出指定级别的日志. 配置文件如下: ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- Code First :使用Entity. Framework编程(6) ----转发 收藏
Chapter6 Controlling Database Location,Creation Process, and Seed Data 第6章 控制数据库位置,创建过程和种子数据 In prev ...
- Code First :使用Entity. Framework编程(7) ----转发 收藏
第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 更新关系数据
Updating related data¶ 7 of 7 people found this helpful The Contoso University sample web applicatio ...
- SharePoint Framework 概述
博客地址:http://blog.csdn.net/FoxDave 本文翻译自新出的SharePoint Framework概述介绍文章,原文地址:http://dev.office.com/sh ...
- Programming Entity Framework 翻译(2)-目录2-章节
How This Book Is Organized 本书组织结构 Programming Entity Framework, Second Edition, focuses on two ways ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块
spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...
- [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations
本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...
- 【凯子哥带你学Framework】Activity启动过程全解析
It’s right time to learn Android’s Framework ! 前言 学习目标 写作方式 主要对象功能介绍 主要流程介绍 zygote是什么有什么作用 SystemSer ...
随机推荐
- 题解:P10732 [NOISG2019 Prelim] Palindromic FizzBuzz
题解:P10732 [NOISG2019 Prelim] Palindromic FizzBuzz 题意 题意十分明了,给予你一个区间,判断区间中每一个数是否是回文数. 思路 思路比较简单,首先将每一 ...
- Windows/Linux 安装NVM及npm配置
nvm安装及npm配置 nvm nvm下载 Windows: Releases · coreybutler/nvm-windows (github.com) Windows直接下载相应版本的nvm-s ...
- 关于我自己的Gui界面库完善
仓库地址:https://gitee.com/GPRO/Gui 功能说明: 解析XML, 接入AngleScript. 接下来需要做的: 因为有了WPF,MFC,HTML甚至UE5的使用经验,这里我 ...
- vscode添加python文件头模板
pycharm可以自动生成python的文件头模板,但是vscode目前还不可以(不支持python,c的似乎有插件支持了).琢磨了一下,可以通过用户代码片段来实现. 1. 什么是用户代码片段 参考文 ...
- 假期小结3Hadoop学习
学习Hadoop是一个很好的选择,因为它是大数据处理和分析领域最流行的框架之一.Hadoop提供了可靠.可扩展的分布式数据处理能力,适用于处理大规模数据和构建可靠的数据管道. 在学习Hadoop时,以 ...
- Linux网络问题排查
Linux网络问题排查 用于排查Linux系统的网络故障. 网络排查一般是有一定的思路和顺序的,其实排查的思路就是根据具体的问题逐段排除故障可能发生的地方,最终确定问题. 所以首先要问一问,网络问题是 ...
- 【Vue2】Axios、Async+Await、解构赋值
Axios入门使用,Async和Await用法,解构赋值语法 <!DOCTYPE html> <html lang="en"> <head> & ...
- python画图报错:OSError: 'seaborn-whitegrid' is not a valid package style
解决方法: https://stackoverflow.com/questions/78019854/matplotlib-seaborn-whitegrid-is-not-a-valid-packa ...
- 【解决】ValueError: Memory growth cannot differ between GPU devices
在ubuntu系统下双显卡运行TensorFlow代码报错: ValueError: Memory growth cannot differ between GPU devices 报错的代码位置为: ...
- lua环境配置与编译
1.背景 2.安装lua 官方下载地址:https://joedf.ahkscript.org/LuaBuilds/ 下载后解压即可 解压后: 配置环境变量: 检查是否安装成功: 如果能输出版本号,则 ...