在JavaScript中压缩字符串可以通过多种手段实现,既可以使用第三方库快速完成,也能借助现代浏览器提供的原生压缩能力。下面介绍几种常见且实用的方式。

使用LZ-string库压缩
LZ-string是一个轻量的js字符串压缩库,适合在浏览器或Node环境中压缩文本数据,压缩结果可直接用于URL或本地存储。
// 引入LZ-string(浏览器可通过script标签,Node可npm安装)
// 压缩字符串
var compressed = LZString.compressToBase64('这是一段需要压缩的较长字符串内容');
console.log('压缩后:', compressed);
// 解压字符串
var original = LZString.decompressFromBase64(compressed);
console.log('解压后:', original);
使用Compression Streams API
现代浏览器支持Compression Streams,可以用deflate算法压缩字符串,无需引入外部库,但需要注意旧浏览器不兼容。
// 将字符串压缩为deflate格式base64
async function compressStr(str) {
const stream = new Blob([str]).stream().pipeThrough(new CompressionStream('deflate'));
const blob = await new Response(stream).blob();
const buffer = await blob.arrayBuffer();
let binary = '';
const bytes = new Uint8Array(buffer);
for (let b of bytes) { binary += String.fromCharCode(b); }
return btoa(binary);
}
compressStr('需要压缩的js字符串示例').then(function(res) {
console.log('原生压缩结果:', res);
});
方法对比
| 方案 | 兼容性 | 体积 | 使用难度 |
|---|---|---|---|
| LZ-string | 好 | 较小 | 低 |
| Compression Streams | 现代浏览器 | 小 | 中 |
选择建议
- 兼容老浏览器的项目优先用LZ-string
- 仅面向现代浏览器时可选用原生Compression Streams
- 压缩率要求高且允许引入依赖时使用专用库
通过上述方式,你可以根据运行环境和需求在js中高效地压缩字符串。