将简单 Web 应用程序的状态"save"到地址栏/无后端的最有效方法



有一类简单的web应用程序可以将你的工作"保存"到地址栏,而不需要在后端存储任何东西。两个例子:

打印稿操场WebSequenceDiagrams.com

这个功能的正确名称是什么?

做这件事最有效的方法是什么?TypeScript Playground会直接将代码复制到地址栏中,但这并不是很有效。如何压缩数据?

EDIT1:我的数据是JSON格式。

EDIT2:我想我的问题归结为什么样的压缩可以输出URL安全字符。

EDIT3:与本地存储相反,"保存"到URL的要点是用户可以复制/粘贴状态。想象一个TypeScript Playground被剪短,复制为SO answer。

谢谢你的帮助!

我认为您可以先使用http://pieroxy.net/blog/pages/lz-string/index.html压缩JSON字符串,然后使用内置的encodeURIComponent()函数对压缩字符串进行编码。

下载库并指定它,

<script language="javascript" src="lz-string.js"></script>

压缩和编码你的数据,

var string = JSON.stringify({attr: "This is my compression test."});
alert("Size of sample is: " + string.length);
var compressed = LZString.compress(string);
alert("Size of compressed sample is: " + compressed.length);
var getParam = encodeURIComponent(compressed);

解码时先用decodeURIComponent()解码,再用LZString.decompress(compressed)解压

http://pieroxy.net/blog/pages/lz-string/index.html

LZString.compressToBase64 ()

compressToBase64产生ASCII UTF-16字符串,表示Base64编码的原始字符串。它们可以安全地传输到浏览器之外,并保证生成的任何字符都不需要进行url编码。可以使用decompressFromBase64解压。它的工作原理是每个字符只使用6位存储空间。因此产生的弦比压缩产生的弦大166%。它仍然可以显著减少一些JSON压缩对象

您可以使用简单的霍夫曼压缩和base64来编码和解码一些变量。我还用它来保存我的一些应用变量,比如页面,下拉选择,复选框。它的优点是将其压缩在一个地方,也就是一个状态,您甚至可以将其保存到一个文件中,并将其用作"断点",甚至创建存档。在ajax应用程序中,它还提供了应用程序的浏览器历史记录和更好的桌面体验。可能性是无限的。对于有经验的开发者来说,这是最先进的技术,但我在现实生活中并没有看到很多。顺便说一句,我把它保存到一个隐藏的字段,下载时我使用了一个特殊的用户。在地址栏中使用它可能会有风险,也许是ajax历史记录

是的,你可以使用哈希算法或任何其他URL哈希技术在URL中编码你的web应用程序状态。

但是正如其他人所说,HTML5提供了更好的方式来保存应用程序状态。

相关内容

最新更新