Javascript,url对象压缩

时间:2015-03-09 20:14:25

标签: javascript angularjs url encoding

我正在寻找(尽可能简单)压缩我正在创建的网址的方法。

我正在从一个对象生成它,并且该对象只有2个具有对象值的项目,其中包含2个项目,并且它已经变得非常大了。这是我的参考资料:

For getting the url :

StateString.decode($location.search().state);

For setting it :

$location.search({state: StateString.encode(myObject)});

Statestring刚刚运行 -

 return {
    encode: function(data) {
      return encodeURIComponent(JSON.stringify(data));
    },
    decode: function(searchString) {
        if(searchString){
            return JSON.parse(decodeURIComponent(searchString));
        }else{
            return
        }
    }

只需设置角度工厂即可重复使用。

所以 - 我正在寻找用url字符串稍微减轻负载的方法,它现在很长,即使只有几个内部。不必依赖另一个js库就好了(但如果必须的话,我必须这样做)。寻找有关采取此措施的任何见解/提示。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

您可以创建一个数组,其中包含所有可能的状态,并使用索引作为键。要使它更小,您可以在url参数中使用索引的基本36版本。因此,对于1个字符(0-z),您可以有35个状态,对于2个字符(0-zz),您可以拥有1295个状态。

var encodingMap = {"{lorem:'ipsum','mykey':'myval'}","{'faefag':'veabvb'}"];
return {
    encode: function(data) {
      return encodeURIComponent(encodeMap.indexOf(JSON.stringify(data)).toString(36));
    },
    decode: function(searchString) {
        if(searchString){
            return JSON.parse(decodeURIComponent(decodeMap[parseInt(searchString,32)]));
        }else{
            return
        }
    }