如何在Javascript中存储请求URL以满足DRY主体?

时间:2020-03-06 14:50:05  来源:igfitidea点击:

Javascript中是否有任何常用的模式来存储将在AJAX应用程序中请求的端点的URL?

例如,我们是否将创建一个"服务"类来抽象化URL?

解决方案

问题类似于这个已经回答的问题吗?如果是这样,答案也适用于代码吗?

我们将全局变量存储在何处是个人选择的问题。最好将它们放在一个对象中,以避免全局命名空间中的冲突,因此,是的,一个名为Service的全局对象将是存储URL以及在多个位置使用的其他字符串的一个好地方。

我们可以创建ValuePairs的集合,在其中存储每个URL值和一个标识符:

function ControlValuePair(Id, Value)
{   
    this.Id = Id;
    this.Value = Value;
}

function CreateCollection(ClassName)    
{
    var obj=new Array();
    eval("var t=new "+ClassName+"()");
    for(_item in t)
        {
            eval("obj."+_item+"=t."+_item);
        }
    return obj;
}

function ValuePairsCollection()
{
    this.Container="";
    this.Add=function(obj)
    {
        this.push(obj);
    }
}

稍后,我们可以遍历集合或者查找ID。

我已经使用过类似的东西(在Rails中使用):

NAMESPACE.categories.baseUri = '/categories';
NAMESPACE.categories.getUri = function(options)
{
  options = options || {};
  var uri = [NAMESPACE.categories.baseUri];

  if(options.id)
  {
    uri.push(options.id); 
  }
  if(options.action)
  {
    uri.push(options.action);
  }
  if(options.format)
  {
    uri.push('?format=' + options.format);
  }

  return uri.join('/');
}