Pengesyoran untuk beberapa pustaka pemampatan dan penyahmampatan JavaScript praktikal pada kemahiran GitHub_javascript

WBOY
Lepaskan: 2016-05-16 15:10:49
asal
3388 orang telah melayarinya

Keseluruhan folder arkib dan nyahrkib yang sedia ada perlu digunakan dalam projek semasa mencari penyelesaian, saya mencuba beberapa perpustakaan popular, terutamanya adm-zip, JSZip, arkib, dsb.

1.Gunakan adm-zip
adm-zip menyokong fungsi mengarkib dan menyahrkibkan satu atau lebih fail atau keseluruhan folder, yang sangat mudah dan mudah digunakan.

  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);

Salin selepas log masuk

Kebaikan dan keburukan:
1. Ia merealisasikan pemampatan dan penyahmampatan pada masa yang sama, dan boleh beroperasi pada fail atau folder sedia ada selagi laluan disediakan. Ia melaksanakan banyak antara muka dan mudah digunakan.
2. Terdapat pepijat dengan sendirinya, dan kadangkala fail yang dinyahmampat tidak boleh dipulihkan kepada fail asal. Semoga pepijat ini akan diperbaiki dari semasa ke semasa.


2. GunakanJSZip
Apabila menggunakan pustaka ini, anda perlu menambah fail satu demi satu pada objek zip, dan anda perlu menambah kandungan secara manual, kemudian gunakan operasi menulis fail untuk menukar objek zip dalam memori kepada storan fizikal. Jadi jika ia untuk keseluruhan folder, ia sangat menyusahkan dan perlu melintasi folder itu.

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;
});

Salin selepas log masuk

Terdapat juga kaedah folder dalam JSZip, tetapi ia hanya digunakan untuk menukar laluan maya dalam objek zip Contohnya, zip.folder("img").file('a.txt') adalah untuk menambah subdirektori img ke zip , buat a.txt di bawah, kesannya bersamaan dengan zip.file("img/a.txt"). Ia juga harus diperhatikan di sini bahawa kandungan fail perlu ditambah secara manual Jika ia hanya zip.file("a.txt"); ia hanya mencipta fail txt dengan kandungan kosong dalam objek zip, dan ia sahaja wujud dalam memori , ia perlu ditulis pada fail sebelum ia sebenarnya disimpan ke cakera.

Kebaikan dan keburukan:
1. Ia lebih sesuai untuk menukar beberapa data yang diterima dalam masa nyata kepada zip. 2. Menyusahkan untuk mengendalikan folder sedia ada Anda perlu menambah kandungan pada objek zip satu demi satu dan kemudian menukarnya menjadi fail.
3. Banyak pengekodan memerlukan perhatian.
4. Hanya fungsi mampatan.


3. Gunakan arkib dan nyahzip
Kombinasi ini adalah yang terakhir saya gunakan. Ia lebih dipercayai dan lebih mudah digunakan. Pengarkib sangat berkuasa dan menyokong format tar zip Anda hanya perlu menyediakan laluan untuk memampatkan folder yang sedia ada. Mampatan:

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();

Salin selepas log masuk

Nyahzip:

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));

Salin selepas log masuk

Kebaikan dan keburukan:
1. Ia telah dicuba untuk masa yang lama dan mempunyai lebih sedikit pepijat.
2. Mudah digunakan, tidak perlu merentasi folder.
3. Mereka hanya menyediakan pemampatan atau penyahmampatan, bukan kedua-dua fungsi. (Jadi ​​adm-zip sebenarnya sangat berguna, tetapi pepijat adalah kecacatan...)

Ini hanyalah sebahagian daripada perpustakaan yang saya temui semalam. Anda dialu-alukan untuk mengesyorkan perpustakaan lain

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!