GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016-03-13 00:00
585 查看
项目里要用到archive和unarchive整个已存在的folder,在找解决方案的时候尝试了一些当前比较流行的library,主要有adm-zip, JSZip, archiver等。
一.Use adm-zip
adm-zip支持archive和unarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便。
Pros and cons:
1. 同时实现了压缩和解压,而且只要提供路径就可以对已存在的文件或文件夹进行操作,实现了很多接口,使用方便简单。
2. 本身存在bug,有的时候解压文件没法还原到本来的文件。Hope慢慢这些bug会fix好。
二. UseJSZip
这个库在使用的时候需要把文件一个个增加到zip对象中,而且需要把内容也手动添加,再使用写文件操作把内存中的zip对象转成物理存储。所以如果是对于一整个文件夹来说,就很麻烦,需要遍历文件夹。
JSZip里面也有个folder方法,但它只是用来切换zip对象内部的虚拟路径,比如zip.folder("img").file('a.txt')就是在zip中添加一个img子目录,在下面创建a.txt,效果等同于zip.file("img/a.txt")。这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt");只是在zip对象中创建了内容为空的txt文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。
Pros and cons:
1.对于一些实时接受到的数据转成zip的比较适用。 2.对于已存在的文件夹操作不便,需要一个个把内容添加到zip对象,再转成文件。
3.很多编码需要注意。
4.只有压缩功能。
三. Use archiver and unzip
这个组合是最后我使用的,比较靠谱,使用也比较简单,其中archiver很强大,支持zip格式tar格式,只需要提供路径就可以压缩已存在的文件夹。 压缩:
解压:
Pros and cons:
1. 久经试用,bug较少。
2.使用方便,不需要遍历文件夹。
3. 均只提供压缩或者解压,没有两个功能都实现的。(所以adm-zip其实很好用,但bug是硬伤啊...)
这些只是我昨天找的一些库,欢迎推荐其他库么么哒
php使用gzip压缩传输js和css文件的方法
angularjs客户端实现压缩图片文件并上传实例
Python格式化压缩后的JS文件的方法
php实现压缩多个CSS与JS文件的方法
使用GruntJS链接与压缩多个JavaScript文件过程详解
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
IIS7下js文件启用Gzip后却不压缩的解决方法
一.Use adm-zip
adm-zip支持archive和unarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便。
var adm_zip = require('adm-zip'); //creating archives var zip = new adm_zip(); zip.addLocalFolder('archiver'); zip.writeZip('adm/adm-archive.zip'); //extracting archives var unzip = new adm_zip('adm/adm-archive.zip'); unzip.extractAllTo("adm/adm-unarchive/", /*overwrite*/true);
Pros and cons:
1. 同时实现了压缩和解压,而且只要提供路径就可以对已存在的文件或文件夹进行操作,实现了很多接口,使用方便简单。
2. 本身存在bug,有的时候解压文件没法还原到本来的文件。Hope慢慢这些bug会fix好。
二. UseJSZip
这个库在使用的时候需要把文件一个个增加到zip对象中,而且需要把内容也手动添加,再使用写文件操作把内存中的zip对象转成物理存储。所以如果是对于一整个文件夹来说,就很麻烦,需要遍历文件夹。
var JSZip = require("jszip"); var fs = require("fs"); var zip = new JSZip(); var file_content = fs.readFileSync('archive/a.txt'); zip.file("a.txt",file_content); var data = fs.readFileSync("archive/img/pic.jpeg"); zip.file("img/pic.jpeg", data, {base64: true}); var zipfolder = zip.generate({type:"nodebuffer"}); fs.writeFile("jszip.zip", zipfolder, function(err) { if (err) throw err; });
JSZip里面也有个folder方法,但它只是用来切换zip对象内部的虚拟路径,比如zip.folder("img").file('a.txt')就是在zip中添加一个img子目录,在下面创建a.txt,效果等同于zip.file("img/a.txt")。这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt");只是在zip对象中创建了内容为空的txt文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。
Pros and cons:
1.对于一些实时接受到的数据转成zip的比较适用。 2.对于已存在的文件夹操作不便,需要一个个把内容添加到zip对象,再转成文件。
3.很多编码需要注意。
4.只有压缩功能。
三. Use archiver and unzip
这个组合是最后我使用的,比较靠谱,使用也比较简单,其中archiver很强大,支持zip格式tar格式,只需要提供路径就可以压缩已存在的文件夹。 压缩:
var fs = require('fs'); var archiver = require('archiver'); var output = fs.createWriteStream('archiver-unzip.zip'); var archive = archiver('zip'); archive.on('error', function(err){ throw err; }); archive.pipe(output); archive.bulk([ { src: ['archiver/**']} ]); archive.finalize();
解压:
var fs = require("fs"); var unzip = require("unzip"); fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));
Pros and cons:
1. 久经试用,bug较少。
2.使用方便,不需要遍历文件夹。
3. 均只提供压缩或者解压,没有两个功能都实现的。(所以adm-zip其实很好用,但bug是硬伤啊...)
这些只是我昨天找的一些库,欢迎推荐其他库么么哒
您可能感兴趣的文章:
小心!AngularJS结合RequireJS做文件合并压缩的那些坑php使用gzip压缩传输js和css文件的方法
angularjs客户端实现压缩图片文件并上传实例
Python格式化压缩后的JS文件的方法
php实现压缩多个CSS与JS文件的方法
使用GruntJS链接与压缩多个JavaScript文件过程详解
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
IIS7下js文件启用Gzip后却不压缩的解决方法
相关文章推荐
- JS中创建函数的三种方式及区别
- 教你优雅地运用JS模块化编程
- 常用排序算法js实现
- JavaScript绑定事件
- 学习 JavaScript 最难点之一 -- 理解prototype(原型)
- js中!!的作用
- JavaScript高级程序设计(第三版)学习笔记11、12、17章
- 基于JS的DOM 编程基础和Json语法及JS下的AJAX基础
- JavaScriptCore框架在iOS7中的对象交互和管理
- [JSOI2007] [BZOJ1031] 字符加密Cipher - 后缀数组
- chart.js绘图,如何显示图例?
- [JSOI2008] [BZOJ1013] 球形空间产生器sphere - 高斯消元
- JavaScript 中的 prototype
- [JSOI2008] [BZOJ1012] 最大数maxnumber - 单调栈
- javascript 数组
- 数据可视化---之---数据色彩化
- xStream完美转换XML、JSON
- JavaScript 中类的实现 (js中的对象)
- JSP的四种属性范围
- JSP的基本语法与基本指令