BreezeJs的功能已经由AngularJs实现了?

时间:2015-06-11 14:35:55

标签: javascript angularjs breeze entitymanager

我被建议使用BreezeJs作为AngularJs项目,我发现它有一些非常有趣的features

在我的情况下,主要的兴趣在于缓存,跟踪更改,一些轻量查询和验证。 我认为这些功能可以在AngularJs的某个级别实现,而不会有太多麻烦:

  • 缓存可以通过将数据或API调用结果存储在服务中的对象中来实现吗?鉴于服务性质,数据将在整个应用程序中可访问,并且将被缓存。
  • 跟踪更改由具有双向数据绑定的角度完成。在这里你可以放弃一些双向绑定(Angular中的观察者较少),但是Breeze会并行检查。
  • 查询是我不需要非常复杂的事情,因此Angular过滤器可以完成这项工作。同样的事情也适用于验证,我从Angular那里得到了足够的东西。

对于数据处理,我看到 EntityManager 非常方便。

我觉得对于应用程序来说,不是太复杂,你可以用一种干净的方式直接在AngularJs中实现BreezeJs提供的几乎所有东西,而无需再添加一个库。

我在BreezeJs中缺少什么?

1 个答案:

答案 0 :(得分:2)

你几乎缺少一切; - )

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

  • Breeze缓存可确保实体身份,导航属性的即时维护,实体脏检查,缓存查询等等。在Angular" cache"。

  • 中没有
  • Angular不会跟踪实体的变化。它跟踪可见绑定的变化;如果它在屏幕上,则无法跟踪。一旦它不再在屏幕上,"跟踪"离开了。 Angular中没有模型更改状态的概念。

  • 角度过滤器用于内存过滤,而不是查询服务器(或缓存)。

  • 角度验证纯粹是面向HTML的。他们没有验证模型。它们不会阻止尝试保存无效实体。他们没有提供回答问题的方法"这个实体或财产是否有效,如果没有,它是如何无效的?"。通过ng,您可以询问表单的有效性,而不是实体。它无法帮助您在任何地方执行业务规则;您可以做的最好的事情是尝试使用每个业务规则适用的验证来修饰触及模型属性的每个HTML元素(这可能意味着为您的自定义验证规则创建自定义指令)。祝你好运。

我根本没有敲击Angular。 Angular专注于组织应用程序和与HTML交互所需的功能。它会引发$http来发出服务器请求,但是到目前为止#34}已经下降了#34}。进入模型层。事实上,它非常刻意(并且恰当地IMO)对模型没有任何假设。因此,它不能做Breeze所做的事情,也不应该这样做。

如果你想深入研究一下,你可以看看试图解释Breeze做什么的slides I presented at ngConf 2014以及Angular和Breeze之间的协同作用。

我不知道您的应用程序是否需要Breeze。但Angular中没有任何东西可以与Breeze相提并论。因此,如果你想要Breeze中的功能,你有两个选择:

  1. 使用Breeze
  2. 滚动你自己的框架,利用你可以从ng中获得的任何东西(其中很少直接适用)。
  3. 希望澄清。