几个月来,我一直在研究 AngularJS 的优点,以便将其用作我正在创建的产品的核心框架。AJS 有很多方面值得学习。是的,有一点学习曲线,但它非常值得,特别是如果您希望对客户端功能有更多控制。
JQuery 在运行时操作 DOM,而 AJS 位于 JS 渲染生命周期中。这允许您通过创建 HTML 元素和属性来教授 DOM 新技巧。这是非常非常强大的。你所能做的就是为你的目的和需要引入新的元素行为。在 AJS 中,这些自定义 HTML 属性/元素称为指令。通过制作自己的指令的能力,您可以构建当前 HTML 所没有的功能,推出将在现在和将来在所有现代浏览器上运行的功能。在诱导新行为的众多方法中,AJS 似乎是人们可以采取的最安全的方向,因为他们选择了实现它的方式。
在 AJS 中比 JQuery 有巨大的性能提升。
我喜欢双向数据绑定的简单性,以及客户端 MVC 模式中关注点的分离,如上所述,这提供了很好的可测试性。范围对象是视图(HTML)、模型(您的数据)和您的自定义控制器之间的粘合剂。范围提供对父属性的访问,并且可以在兄弟级别隔离,这对于某些可重用模板很重要。
模板可以在您的应用程序中创建和重用,其中可以包含 0 个或多个自定义指令。
我一直在使用 PRISM 和 MEF 等框架,但我发现 AJS 具有这些 .NET 框架中存在的大部分相同功能,但占用空间仅为 29K。有传言说他们正在研究延迟加载,如果提供的话,它将提供一些非常有趣的 LOB 类型功能。
有许多为 AJS 构建的 UI 框架,但您可以根据需要包装任何 3rd 方控件库,只要付出一点努力。诀窍是确保当这些 3rd 方控件发生更改时,确保使用它们的 apply 方法正确通知 AJS。
如果您在 VS 2012 中将 AJS 与 MS TypeScript 结合使用,它提供了管理和构建一些非常令人印象深刻的项目的能力,这对于那些更熟悉 VS 中的项目的人来说非常有用。
考虑 AJS 的原因还有很多,但是如果您正在考虑使用 KnockOut 等框架,我强烈推荐使用 AJS,不管它的学习曲线如何。Knockout 是一个库,AJS 是一个框架。