最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js URL參數(shù)的拼接方法比較

 更新時間:2012年02月15日 18:39:03   作者:  
請求的URL后面帶參數(shù)在項目中是很常見的,常用在的地方比如跳轉到新頁面或者請求CGI等
最常見的方式就是:
復制代碼 代碼如下:
url?arg1=value1&arg2=value2&arg3=value3...

  這樣的方式最常見最普通也最容易理解,但是在項目中,如果后面帶的參數(shù)可變而且字段有不同的值或者不同的語義時,這樣的方式可維護性和可讀性其實并不高,而且代碼也容易重復或者冗余。
  比如下面的一個對CGI的請求串:
復制代碼 代碼如下:

var url = "http://www.tenpay.com/app/v1.0/juhui.cgi?";
var queryString = "method=2&page=index";
if(content a){ //訪問的首頁的區(qū)域A,需要加參數(shù)subpage
  queryString += "&subpage=a";
}else if(content b){//如果訪問了區(qū)域B,則參數(shù)subpage要變?yōu)閎
  queryString += "&subpage=b";
}
if(spec_method){
  //如果查看的時候要按照指定的篩選方法,則還需要加參數(shù)spec_method
queryString += "&spec_method=1"
}

這是最常見的拼串邏輯了,這樣的代碼是沒有什么問題,但是寫注釋很麻煩,而且可讀性也不高,字段說明也不明確,如果需要更換一個字段或在原來的基礎上更改邏輯都比較麻煩。
  我參看了一些同事關于這個問題的解決方案,第一種是將參數(shù)用對象的形式存起來,然后再寫一個方法在請求時將參數(shù)拼起來:
復制代碼 代碼如下:

var queryConfig={
"page" : "index",
"method" : 2, //1:按照方法A查看 2:按照方法B查看
"subpage" : -1, //-1:此條件不傳遞 a:查看contentA b:查看contentB
"spec_method" :-1 //-1:此條件不傳遞 1:按照銷量高低查 2:按照時間查
};
var setQueryConfig = function(){
var _str = "";
for(var o in queryConfig){
if(queryConfig[o] != -1){
_str += o + "=" + queryConfig[o] + "&";
}
}
var _str = _str.substring(0, str.length-1);
return _str;
}

這個方法是挺不錯的,優(yōu)點就是將所有參數(shù)一目了然的在對象中全部列出來,注釋也可以針對字段更詳細,可讀性和維護性都得到了提高;但是缺點就是代碼有點多,還需要專門加一個方法來組合參數(shù)。
  另外有一個方法是用數(shù)組的方法:
復制代碼 代碼如下:

var queryString = [
"method=2", //method字段的注釋
"page=index"
];
if(content a){ //訪問的首頁的區(qū)域A,需要加參數(shù)subpage
  queryString.concat([
"subpage=a", //subpage注釋
]);
}else if(content b){//如果訪問了區(qū)域B,則參數(shù)subpage要變?yōu)閎
  queryString.concat([
"subpage=b", //subpage注釋
]);
}
if(spec_method){
  //如果查看的時候要按照指定的篩選方法,則還需要加參數(shù) queryString.concat([
"spec_method=2", //spec_method注釋
]);
}
queryString = queryString.join("&");

這個方法可讀性可能比對象的方法差一些,但是維護性也比較高,代碼量也比較少。相對來說這個方法我還比較喜歡。
恩恩,要不是昨天的代碼評審,這樣小的地方的代碼優(yōu)化我是要工作很久之后才能發(fā)現(xiàn)的。看來代碼評審對自身能力提高是加速劑吖,哈哈。
這兩個方法是我暫時發(fā)現(xiàn)的,要是后續(xù)再發(fā)現(xiàn)什么好方法,再補充進來~

相關文章

最新評論

谷城县| 林西县| 嫩江县| 兴化市| 皋兰县| 长垣县| 张家港市| 砀山县| 崇仁县| 航空| 河间市| 登封市| 海城市| 怀柔区| 金山区| 蒙自县| 阳春市| 富顺县| 平阴县| 太原市| 涞源县| 邢台县| 辰溪县| 沅江市| 五台县| 渑池县| 分宜县| 黄陵县| 绥阳县| 永川市| 大城县| 宜黄县| 梧州市| 贵南县| 奉贤区| 临颍县| 兴仁县| 疏附县| 辉南县| 宜黄县| 剑阁县|