我只看到了这两种技术的基本描述(并阅读了关于Closure的书的一半),所以我没有直接的经验,但这是它看起来对我来说:
> Closure是一组可以单独使用的技术。我发现可能最有吸引力的是:
> Closure Compiler似乎“修复JavaScript”在某种意义上警告了典型的问题,提供了一些编译时检查(不是所有的人都这样,但可能大多数Google开发人员,我也这样做)。当然,结果代码更小,更高效是很好的。
>然后有我喜欢的Closure库的一些部分,例如。内置类型的抽象(ArrayLike等),基于类的系统,事件机制,DOM抽象等等。我还不确定如果我喜欢GUI库或者不是(似乎是相当复杂,我没有真的有时间学习它)。
>然后有一些功能,我不认为我会发现有用的,例如。模板。
> AngularJS,我只是简单地阅读,似乎是比Closure高得多。它似乎是一个应用程序框架提供的功能,如数据绑定,可重用组件,MVC结构等。
所以这两种技术似乎是针对不同的抽象层次,所以我的第一个想法是,它们可以一起使用吗? Closure提供低级编译器和浏览器抽象,而Angular提供应用程序级服务和结构?它会有意义,它会一起工作吗?
Google Closure Library在其goog.ui命名空间中提供了一个UI框架。这个框架几乎在所有方面都与非Web UI框架(如Android,iOS,Swing和QT)进行比较。他们有一个东西我喜欢调用DOM元素类固醇,goog.ui.Component,它有很多伟大的生命周期机制垃圾收集和事件监听等等。你有类似于goog.ui.Control的东西,它是goog.ui.Component的子类,并以一种非常有趣的方式处理用户交互。它允许您插入渲染器,例如,您可以更改< button>到< a>而不改变任何其他逻辑,除了实际渲染。
说到类和子类,Google Closure Library也有这个。你不必使用内置的,重要的是你不知何故在你的方法中调用“超类”的原型。你可以例如在CoffeeScript中使用类系统,Google Closure Library不在乎。
DoubleClick团队选择AngularJS的原因是apparently,这主要是因为AngularJS提供的数据绑定功能。 Google Closure Library中没有内置内容,可在数据更改时自动更新UI。
所以总而言之,谷歌Closure是一个huuuuge野兽,AngularJS可以取代Google Closure库的goog.ui部分。