现在 AngularJS 1.0 is released我想知道这个项目如何与Google的其他通用JavaScript框架/工具相结合,关闭。< / p>
我只看过这两种技术的基本描述(并且阅读了关于Closure的书的一半)所以我没有直接的经验,但这就是它对我的看法:
ArrayLike
等)的抽象,基于类的系统,事件机制,DOM抽象等。我不确定我是否喜欢GUI库(似乎相当复杂,我没有时间研究它。)所以这两种技术似乎都针对不同的抽象层次,所以我的第一个想法是,它们可以一起使用吗?关闭提供低级编译器和浏览器抽象,而Angular提供应用程序级服务和结构?它会有意义并且能够很好地协同工作吗?
答案 0 :(得分:36)
我所知道的唯一使用AngularJS的Google项目是DoubleClick团队。 (presentation)从本质上讲,除了UI构建之外,他们仍然使用Google Closure Library。另请注意,他们使用Google Closure Compiler,但这几乎是给定的,“nobody”只使用没有编译器的库。
Google Closure Library在其goog.ui
命名空间中附带了一个UI框架。该框架几乎在所有方面都与非Android UI框架(如Android,iOS,Swing和QT)进行了比较。他们有一个我喜欢在类固醇goog.ui.Component
上调用DOM元素的东西,它有很多很棒的生命周期机制来进行垃圾收集和事件监听等等。你有goog.ui.Control
之类的东西,它是goog.ui.Component
的子类,并以一种非常有趣的方式处理用户交互。例如,它允许您插入渲染器,这样您就可以将<button>
更改为<a>
,而无需更改除实际渲染之外的任何其他逻辑。
说到类和子类,Google Closure Library也有这个。你不必使用内置的,重要的是你以某种方式调用你的方法中的“超类”的原型。例如,您可以在CoffeeScript中使用类系统,但Google Closure Library并不关心。
DoubleClick团队选择AngularJS的原因是apparently,主要是因为AngularJS提供的数据绑定功能。 Google Closure Library中没有任何内置功能可以在数据更改时自动更新UI。
总而言之,Google Closure是一个huuuuge野兽,而AngularJS可以取代Google Closure Library的goog.ui
部分。
答案 1 :(得分:3)
我认为AngularJS更像是一个可靠的MVC / MVVM框架,而Closure Library是一组松散的组件,尽管AngularJS Templates和Closure Templates都有很多共同之处。