最近在做一个类似离线包的需求,平时我们正常工作中是开发完成一个完整的SPA之后打包上线。由于我们暂时没有服务器的资源,所以目前采取的一个方案是把这个SPA打包为一个zip包,然后上传至CDN,别人用的时候直接从CDN拉包然后解压就可以了,这个方案类似于开发一套完整的离线包流程,其中用到了jszip这个在压缩领域最牛的库,其中也遇到了不少坑,特此总结记录一下。
常用API
官方文档已经很详细的给出了各种API的demo,但是只是很简单的demo,与我们开发中遇到的实际场景还是千差万别的,这个库牛逼的地方在于支持各种类型的资源uint8array
,blob
,arraybuffer
,nodebuffer
,string
等,而且API都是promise风格,所以使用起来非常舒服,简单看几个例子,详情可去看文档;
const zip = new JSZip();
// create a file
zip.file("hello.txt", "Hello World\n");
// create a file and a folder
zip.file("nested/hello.txt", "Hello World\n");
zip.folder("nested").file("hello.txt", "Hello World\n");
// access the file content
zip.file("hello.txt").async("string").then(function (data) {
// data is "Hello World\n"
});
// remove a file or folder
zip.remove("nes