假设我有一个使用第三方 API 作为内容的 单页应用。该应用程序的逻辑只能在浏览器中使用,没有后端可以写入。
为了允许深度链接到应用程序的状态,我使用 pushState()
来跟踪一些决定应用程序状态的变量。(请注意,Ubersicht 的公共版本还没有这么做。)
repos
,labels
,milestones
,username
,show_open
(bool) ,with_comments
(bool)和 without_comments
(bool)。?label=label_1,label_2,label_3&repos=repo_1…
。[a-zA-Z][a-zA-Z0-9_-]
或任何布尔指示符。目前为止还不错。
现在,由于查询字符串可能有点长和笨拙,我希望能够传递像 http://espy.github.io/ubersicht/?state=SOMOPAQUETOKENTHATLOSSLESSLYDECOMPRESSESINTOTHEORIGINALVALUES#hoodiehq
这样的 URL,越短越好。
我的第一次尝试是为 这个使用一些类似 zlib 的算法。然后@flipzag 指向 安提雷兹/< strong > smaz ,它看起来更适合于短字符串。(JavaScript 版本)
由于在 Javascript 版本中没有专门处理 =
和 &
(参见 主 lib 文件的第9行) ,我们可以在那里稍微调整一下。
此外,还有一个在固定表中编码值的选项。使用这个选项,参数的顺序是预定义的,我们需要跟踪的只是实际值。示例: 在 smaz 压缩之前,将 a=hamster&b=cat
转换为 7hamster3cat
(长度 + 字符)或 hamster|cat
(值 + |
)。
我还需要找什么吗?