Angular Material如何工作?为什么需要为Angular 2完全重写?

时间:2017-04-26 05:06:51

标签: angular angular-material angular-material2

所以我最近开始使用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 个答案:

答案 0 :(得分:4)

首先,我们在这里清楚一些术语。我认为谷歌宣布不再有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还有另一个网络组件概念项目 - Polymer。这专注于网页组件,它可以刷新您对网络的认知。我相信所有浏览器都不完全支持它。

总体而言,Angular拥有强大的生态系统和一系列工具,可帮助您构建任何小型到大型Web应用程序。它使Javascript易于编码,维护和测试。

答案 1 :(得分:0)

  

鉴于Angular和Angular 2在一天结束时只是吐出HTML,你基本上不能保留所有底层的CSS和javascript代码吗?

Angular拥有自己的"语法"将视图绑定到模型。 Angular和Angularjs之间的语法完全不同。

HTML和CSS被拆分为组件以构建可重用的构建块。

Angular和Angularjs之间的差异也导致组件(以及指令和管道)在这些框架之间的结构完全不同,这也需要HTML,CSS和代码的结构不同。

动画也完全不同。

Angular用户TypeScript(至少它是最常用的Angular变体),它允许编写更具表现力的代码。这也需要完全不同的代码来使用Angulars全功率。

其余的大量细节不同。

我认为他们在重建材料组件时重复使用了很多知识; - )