Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类似于DAOs的主干设计模式_Javascript_Api_Backbone.js_Dao - Fatal编程技术网

Javascript 类似于DAOs的主干设计模式

Javascript 类似于DAOs的主干设计模式,javascript,api,backbone.js,dao,Javascript,Api,Backbone.js,Dao,总的来说,我很高兴在我公司的前端应用程序中使用Backbone.js。然而,我注意到了许多基本问题,我想知道是否还有其他人遇到过这些问题 最大的问题是前端团队无法控制为我们的应用程序提供动力的API。传递的对象在结构上相当复杂。嵌套数组、子对象等。。。。这本身是意料之中的。API的用途与前端不同。每个人认为“对象”是完全不同的东西 在实践中,这会导致一些问题。也就是说,一个API端点可以分解为多个前端模型。这是处理API时的常见问题。它通常通过数据访问对象或将API对象转换为内部对象的数据访问层

总的来说,我很高兴在我公司的前端应用程序中使用Backbone.js。然而,我注意到了许多基本问题,我想知道是否还有其他人遇到过这些问题

最大的问题是前端团队无法控制为我们的应用程序提供动力的API。传递的对象在结构上相当复杂。嵌套数组、子对象等。。。。这本身是意料之中的。API的用途与前端不同。每个人认为“对象”是完全不同的东西

在实践中,这会导致一些问题。也就是说,一个API端点可以分解为多个前端模型。这是处理API时的常见问题。它通常通过数据访问对象或将API对象转换为内部对象的数据访问层来解决。相反,主干网希望模型和API端点紧密耦合。模型上的同步操作(即保存、获取)立即到达API

除此之外,我严重认为主干中的toJSON做得太多了。它用于以可在内部使用的格式复制模型;定义模型应如何发布到API;并用于许多内部操作的模型之间的相等性检查。这三个人中的任何一个都有可能找到自己的方法

还有其他人处理过吗?你使用了什么策略?实现DAOs?是否有一个主干分支可以解释这些问题

[编辑]

我遇到的一个更接近真实世界的案例。当我们查询API的结果时,大约有一百个过滤器可以随请求一起传递。总体过滤器结构非常简单,在这方面,过滤器对象数组如下:

{
  filterName: '',
  // '~', '=', '<=', '>='
  operator: '',
  value: ''
}
{
过滤器名称:'',
// '~', '=', '='
运算符:“”,
值:“”
}
对于一个特别有问题的过滤器,根据“操作员”,我们要么允许用户选择单个选项,要么允许用户从可用选项中构造“句子”。前一个选项呈现为HTML选择,后一个选项由lextree解析器实现。显然,这两种方法需要非常不同的代码,所以我们将其分为两个不同的类,但是对于API来说,无论我们的实现如何,过滤器都是相同的

这很简单,但是主干的问题涉及到如何定义类。我们可能希望使用内置的get/set函数。但这会将属性转储到属性中,这会影响默认的toJSON,该toJSON也用于构建此过滤器的API表示,以及此过滤器是否等于相同类型的另一个过滤器


有了数据访问模式,就会有另一层知道如何将过滤器转换为API,反之亦然。任何CRUD操作都将由特定DAO拾取并由代理处理

你能举一个典型问题的例子吗?@KimGysen用一个例子更新了这个问题