client-side - Angular JS 与 Google Closure 有何关系?

标签 client-side google-closure angularjs

现在 AngularJS 1.0 is released我想知道这个项目如何与 Google 的其他通用 JavaScript 框架/工具 Closure 结合在一起。

我只看过这两种技术的基本描述(并且阅读了大约一半的关于 Closure 的书),所以我没有直接的经验,但这对我来说是这样的:

  • 闭包是一组可以单独使用的技术。我发现最吸引人的可能是:
    • Closure Compiler 从某种意义上说它似乎“修复了 JavaScript”,它对典型问题发出警告,提供了一些编译时检查(并非所有人都喜欢这样,但可能大多数 Google 开发人员都这样做,我也做)。当然,生成的代码更小、更高效,这很好。
    • 然后还有一些我喜欢的闭包库部分,例如对内置类型的抽象(ArrayLike 等)、基于类的系统、事件机制、DOM 抽象等。我还不确定我是否喜欢 GUI 库(似乎相当很复杂,我还没有时间研究它)。
    • 还有一些我认为没有用的功能,例如模板
  • AngularJS,我只是简单地读过,它似乎比 Closure 级别高得多。它似乎是一个应用程序框架,提供数据绑定(bind)、可重用组件、MVC 结构等功能。

所以这两种技术似乎针对的是完全不同的抽象级别,所以我的第一个想法是,它们可以一起使用吗?闭包提供低级编译器和浏览器抽象,而 Angular 提供应用程序级服务和结构?它有意义并且可以很好地协同工作吗?

最佳答案

据我所知,唯一使用 AngularJS 的 Google 项目是 DoubleClick 团队。 (presentation)本质上,他们仍然使用 Google Closure Library 来完成除 UI 构建之外的所有事情。另请注意,他们使用 Google Closure 编译器,但这几乎是给定的,“没有人”只使用库而不使用编译器。

Google Closure Library 在其 goog.ui 中附带了一个 UI 框架。命名空间。该框架几乎在所有方面都可以与 Android、iOS、Swing 和 QT 等非 Web UI 框架进行比较。他们有一个我喜欢称之为 DOM 元素的东西,goog.ui.Component ,它有很多很棒的生命周期机制,用于垃圾收集和事件监听等。你有类似 goog.ui.Control 的东西,它是 goog.ui.Component 的子类,并以一种非常有趣的方式处理用户交互。例如,它可以让您插入渲染器,这样您就可以更改 <button><a>除了实际渲染之外,无需更改任何其他逻辑。

说到类和子类,Google Closure Library 也有这个。您不必使用内置的,重要的是您以某种方式在方法中调用“父类(super class)”的原型(prototype)。例如,您可以在 CoffeeScript 中使用类系统,Google Closure Library 并不关心。

DoubleClick 团队选择 AngularJS 的原因是 apparently主要是因为 AngularJS 提供的数据绑定(bind)功能。 Google Closure 库中没有任何内置功能可以在数据更改时自动更新 UI。

总而言之,Google Closure 是一个巨大的野兽,AngularJS 可以取代 goog.ui Google Closure 库的一部分。

关于client-side - Angular JS 与 Google Closure 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054175/

相关文章:

javascript - AngularJS 过滤器去除某个正则表达式

javascript - 选中复选框已禁用(Jquery)

ssl - 是否可以自动选择正确的客户端证书?

javascript - Google Closure 和生成的 getters/setters

javascript - 在 Closure Linter 中启用 JSX

javascript - 关于将闭包编译器集成到构建流程的建议

javascript - ng-switch 在 ng-repeat Angularjs 中

javascript - 客户端和服务器端编程有什么区别?

android - org.apache.http.conn.HttpHostConnectException :Connection to http://172. 20.38.143 拒绝

javascript - 无法在 ng-repeat 中显示 ng-template