首先我必须承认我对 Angular.js 很陌生,而且我之前没有使用过任何新一代的 js 框架,比如 Backbone 或 Knockout。我正在创建一个使用 RESTful API 与服务器通信的应用程序。我在 Angular 文档和博客笔记中做了很多工作,以便我能做对。
我发现的例子主要是$resource。它看起来很不错:许多内置方法,当您正确设计 REST 接口时,您甚至不必再编写任何东西。
但我(以及我的整个团队)更习惯于 JavaEE 思考模型层的方式:轻量级模型类(POJO 等)、持久化和获取模型的 DAO 类以及可选的 DAO 和控制器之间的服务层。另一方面,在 Angular 中 $resource 创建了一些更类似于活动记录的东西。
我已经想出了两种在 Angular 中实现 DAO 模式的方法:
- 从头开始编写所有内容,一直到 $http 抽象级别。我会将每个 DAO 方法实现为 $http 调用,注意错误。
- 使用 $resource 对象通常像轻量级模型类,并将它们传递给 DAO,DAO 是唯一负责在它们上调用 .$save() 等操作的单元。当然,我们不能阻止在不同的地方调用它,但是这种约定的解决方案对我来说已经足够了。
由于重用现有代码,第二种方式对我来说看起来更好。$resource 具有良好的 promise 对象行为,如果我不必自己实现它,我会很高兴。
所以最后的主要问题是:主动记录方法是在 Angular、Backbone 和其他类似工具中进行数据访问的唯一方法吗?也许有人已经尝试在他的代码中加入更类似于 DAO 的类似解决方案,并且可以分享他的想法?
第二个问题:在处理错误、连接丢失和其他问题时,$resource 对象是否足够?考虑到这一点是否值得使用 $resource 或者最好从较低级别的 $http 开始。
我在项目的开始,我知道这个决定很可能会影响到以后的整个项目生命,所以我想选择最好的。