AngularJs 已经实现了 BreezeJs 功能?

BreezeJs features already implemented by AngularJs?

有人建议我使用 BreezeJs for an AngularJs project and I saw that it has some really interesting features

在我的例子中,主要兴趣在于缓存、跟踪更改、一些简单的查询和验证。 我认为这些功能可以在 AngularJs 中在某种程度上实现,而不会有太多麻烦:

对于数据处理,我发现 EntityManager 非常方便。

我觉得对于应用程序来说,不太复杂,您可以直接在 AngularJs 中实现 BreezeJs 提供的几乎所有功能,以一种非常干净的方式,无需添加更多库。

我从 BreezeJs 中遗漏了什么?

你错过了几乎所有的东西 ;-)

Angular 没有做任何你提到的事情。

  • Breeze 缓存确保实体身份,just-in-time 维护导航属性,实体 dirty-checking,query-over-cache 等等。 None Angular "cache".

  • Angular 不跟踪对实体的更改。它跟踪可见绑定的变化;如果它不在屏幕上,则不会被跟踪。一旦它不再出现在屏幕上,"tracking" 就消失了。 Angular.

  • 中没有模型 change-state 的概念
  • Angular 过滤器用于 in-memory 过滤,而不是查询服务器(或缓存)。

  • Angular 验证纯粹是 HTML-facing。他们不验证模型。它们不会阻止尝试保存无效实体。他们没有提供回答问题 "is this entity-or-property valid and if not, how is it invalid?" 的方法。使用 ng 你询问的是形式的有效性,而不是实体的有效性。它无法帮助您无处不在;你能做的最好的事情就是尝试用每个业务规则适用的验证来装饰每个接触模型 属性 的 HTML 元素(这可能意味着为你的自定义验证规则创建自定义指令)。祝你好运。

我根本不敲 Angular。 Angular 专注于组织应用程序和与 HTML 交互所需的功能。它抛出 $http 来发出服务器请求,但那是 "down" 到模型层的程度。事实上,它非常有意(并且正确地 IMO)不对模型做出任何假设。因此,它不能做 Breeze 做也不应该做的事情。

如果您想更深入地研究,您可以查看 slides I presented at ngConf 2014,它试图解释 Breeze 的作用以及 Angular 和 Breeze 之间的协同作用.

我不知道你的申请是否需要Breeze。但是 Angular 中没有任何东西接近 Breeze。因此,如果您想要 Breeze 中的功能,您有两个选择:

  1. 使用Breeze
  2. 推出你自己的框架,利用你能从 ng 中得到的任何东西(其中很少有直接适用的)。

希望澄清。