JSZip 库
JSZip库
简介
JSZip 是一个JavaScript库,用来创建,阅读和编辑 .zip 文件。
我们已经将 JSZip 制作成 Egret 可以直接使用的第三方库和示例,可在 github下载。
引入
- 引入 - JSZip支持库与引入其他第三方库过程相同,首先下载该库,在 egretProperties.json 中引入该库并编译引擎。
- 打开并编辑 - egretProperties.json文件:- {
 "name": "jszip",// 第三方库名
 "path": "../libsrc"// 第三方库路径
 }
- egret build -e编译引擎。
使用
在 Egret 项目中,发布的时候可以使用 压缩插件 将资源(图片,配置文件等)压缩成一个 .zip 文件,然后使用JSZip读取 .zip 文件的内容。
读取zip文件
首先将 .zip 文件配置到default.res.json中,便于后面读取使用。
// 使用res获取到zip文件
RES.getResAsync("xx_zip").then((data)  =>  {
  // 解压,读取
  JSZip.loadAsync(data);
  //  do something ...
});
加载json
RES.getResAsync("json_zip").then((data)  =>  {
  // 解压,读取
  JSZip.loadAsync(data).then((zipdata)  =>  {
  return zipdata.file("xxx.json").async("text");
  }).then(text  =>  {
  let jsonData =  JSON.parse(text);
  console.log(jsonData);
  });
});
###加载图片
RES.getResAsync("img_zip").then((data)  =>  {
  // 解压,读取
  JSZip.loadAsync(data).then((zipdata)  =>  {
  // 把数据解析为base64
  return zipdata.file("img/xxx.jpg").async("base64");
  }).then(base64  =>  {
 base64 =  "data:image/png;base64,"  + base64;
  const img: eui.Image  =  new  eui.Image();
 img.source  = base64;
  this.addChild(img);
  });
});
生成zip文件
const zip =  new  JSZip();
zip.file("Hello.txt",  "Hello World\n");
// 创建images文件夹
const img = zip.folder("images");
// 二进制数据
const imgData =  "R0lGODdhBQAFAIACAAAAAP/eACwAAAAABQAFAAACCIwPkWerClIBADs=";
img.file("smile.gif", imgData,  { base64:  true  });
zip.generateAsync({  type:  "blob"  }).then((blob)  =>  {
  saveAs(blob,  "example.zip");
});
其他
本文介绍JSZip基本的使用方法,如果开发者想深入了解,可以阅读文档。

