所以我最近开始使用Angular 2,并且意识到有很多不同的Material Design框架,我试图了解差异 .
所以我开始使用Angular Material 2,发现缺少文档和功能,因为该项目仍处于测试阶段 . Angular Material 1似乎完全可操作,它们正在重写它以便与Angular 2兼容 .
所以我想知道是什么让Material与Angular紧密结合,需要完全重写 . 我认为在下面,Angular Material类似于Bootstrap这样的框架,它只是一堆Javascript和CSS文件,它们以某种方式设置HTML样式 . Angular Material使您可以轻松使用内置指令,而不必编写引用正确类的HTML等 .
鉴于Angular和Angular 2在一天结束时只是吐出HTML,你基本上不能保留所有底层的CSS和javascript代码吗?那么你需要做的就是为控件编写Angular 2指令?我一直在使用Material Design Lite,并且有一个名为angular-mdl的npm包,它基本上就是指令 . Angular Material究竟是如何在幕后工作的?
2 回答
首先,我们在这里清楚一些术语 . 我认为谷歌宣布不再有Angular 2,因为它已经是Angular 4了!
在这里,正式,我正在使用 AngularJS (1.x)和 Angular (一个框架) .
Angular完全被重写,与AngularJS无关 . 这就是Angular Material必须重写的原因 .
这里已经有很多讨论了:Angular vs Angular 2 .
以下是如何从AngularJS升级您的应用程序的官方指南:https://angular.io/docs/ts/latest/guide/upgrade.html
Angular Material实际上是一组Angular组件,你可以在这里学习它的源代码:https://github.com/angular/material2
实际上,Google还有另一个Web组件概念项目 - Polymer . 这专注于网页组件,它可以刷新您对网络的认知 . 我认为所有浏览器都不完全支持它 .
总的来说,Angular拥有强大的生态系统和一系列工具,可帮助您构建任何小型到大型Web应用程序 . 它使Javascript易于编码,维护和测试 .
Angular有自己的“语法”来将视图绑定到模型 . Angular和Angularjs之间的语法完全不同 .
HTML和CSS被拆分为组件以构建可重用的构建块 .
Angular和Angularjs之间的差异也导致组件(以及指令和管道)在这些框架之间的结构完全不同,这也需要HTML,CSS和代码的结构不同 .
动画也完全不同 .
Angular用户TypeScript(至少它是最常用的Angular变体),它允许编写更具表现力的代码 . 这也需要完全不同的代码才能使用Angulars全功率 .
剩下的就是大量不同的细节 .
我假设他们在重建材料组件时重复使用了很多知识;-)