HbuilderX中,实现Gzip的两种方法
一:使用Pako进行Gzip压缩
1,安装pako库
npm install pako
2,vue文件页面中,导入pako
<script>
import axios from 'axios'; // 引入axios
3,解压数据
export default {
setup() {
const data = "待解压的文本内容。。。";
const parsedData = ref(null);
onMounted(() => {
// 将base64编码的数据解码为二进制数据
const binaryString = window.atob(data);
const binaryArray = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
binaryArray[i] = binaryString.charCodeAt(i);
}
// 使用pako解压缩数据
const inflated = pako.inflate(binaryArray);
const decodedString = String.fromCharCode.apply(null, new Uint16Array(inflated));
// 解析JSON
try {
parsedData.value = JSON.parse(decodedString);
} catch (error) {
console.error("Failed to parse JSON:", error);
}
});
return {
parsedData,
};
},
};
第二种方式,使用zlib.js进行Gzip压缩
1,首先,在HTML文件中引入zlib.min.js库:
<script src="https://cdnjs.cloudflare.com/ajax/libs/zlib.js/1.2.11/zlib.min.js"></script>
2,解压缩操作
// 原始字符串
let originalText = "这是一个需要被压缩的示例文本。";
// 将原始字符串转换为Uint8Array格式
let uint8array = new TextEncoder().encode(originalText);
// 使用zlib进行gzip压缩
zlib.gzip(uint8array, function(err, compressed) {
if (err) throw err;
console.log("压缩后的数据:", compressed);
// 对压缩后的数据进行解压
zlib.gunzip(compressed, function(err, decompressed) {
if (err) throw err;
console.log("解压缩后的原始字符串:", new TextDecoder().decode(decompressed));
});
});