小编给大家分享一下如何基于节点。js实现压缩和解压缩的方法,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
js是什么
js是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,主要用于web的开发,可以给网站添加各种各样的动态效果,让网页更加美观。
<强>压缩格式强>
zip和gzip是两种我们最常见到的压缩格式,当然,gzip在Windows下很少有人接触。
沥青是一种归档格式,它默认不会压缩,需要结合gzip来将最终的焦油文件以gzip格式压缩成为一个焦油。广州文件,通常我们会缩写为tgz。
为什么没有提到rar ?因为它是专利保护的算法,你可以免费获得解压工具,而压缩工具是需要付费的,所以我们一般应用场景下,很少会提供rar压缩文件。
本文将分别介绍gzip、焦油、tgz和邮政的压缩和解压缩在节点。js下如何实现。
<强>未压缩文件库强>
本文所使用的未压缩文件库来自于urllib,需要先克隆它下来到指定目录。
代码如下:
git克隆https://github.com/node-modules/urllib.git nodejs-compressing-demo
<强> gzip 强>
在Linux的世界,每个工具的职责会很纯粹,非常单一,如gzip,它只会对文件进行压缩,至于文件夹如何打包压缩,跟它没关系,那是焦油要去负责的事情。
<强> gzip命令行压缩一个文件强>
例如我们要将nodejs-compressing-demo/lib/urllib。js文件进行gzip压缩,会得到一个urllib.js。广州文件,源文件会被删除。
,美元ls -l nodejs-compressing-demo/lib/urllib.js -rw-r——r, 1, a a 31318, Feb 12, 11:27 nodejs-compressing-demo/lib/urllib.js 美元,gzip nodejs-compressing-demo/lib/urllib.js 美元,ls -l  nodejs-compressing-demo/lib/urllib.js.gz -rw-r——r, 1, a a 8909年,Feb 12, 11:27 nodejs-compressing-demo/lib/urllib.js.gz #,还原压缩文件 美元,gunzip nodejs-compressing-demo/lib/urllib.js。广州
文件大小从31318字节减少到8909字节,超过3.5倍的压缩效果。
还可以通过管方式,结合猫命令,将文件压缩并保存为任意文件:
,美元ls -l nodejs-compressing-demo/README.md -rw-r——r, 1, a a 13747, Feb 12, 11:27 nodejs-compressing-demo/README.md 美元,cat nodejs-compressing-demo/README.md |, gzip 祝辞README.md.gz 美元,ls -l  README.md.gz -rw-r——r, 1, a a 4903年,Feb 12, 11:50 README.md.gz
<强>节点。js实现gzip 强>
当然,我们不会真的从零开始实现一个gzip算法和工具,在节点。js的世界,早已有人为你准备好这些基础库,我们只需要开箱即用。
本文将会使用压缩模块,实现所有压缩和解压缩代码。
为什么会选择压缩?因为它有足够充分的代码质量和单元测试保证,处于活跃的维护状态,API非常友好,而且还支持流式接口。
<强>承诺接口强>
const compressing =,要求(& # 39;压缩# 39;);//,选择,gzip 格式,然后调用,compressFile 方法 compressing.gzip.compressFile (& # 39; nodejs-compressing-demo/lib/urllib.js& # 39;,, & # 39; nodejs-compressing-demo/lib/urllib.js.gz& # 39;) ,不要犹豫((),=祝辞,{ console.log才能(& # 39;成功# 39;); ,}) ,.catch (err =祝辞,{ console.error才能(错); ,});//,解压缩是反响过程,接口都统一为,解压 compressing.gzip.uncompress (& # 39; nodejs-compressing-demo/lib/urllib.js.gz& # 39;,, & # 39; nodejs-compressing-demo/lib/urllib.js2& # 39;) ,不要犹豫((),=祝辞,{ console.log才能(& # 39;成功# 39;); ,}) ,.catch (err =祝辞,{ console.error才能(错); 以前,});>结合async/等待的编程模型,代码写起来就是一个普通的异步io操作。
const compressing =,要求(& # 39;压缩# 39;); async function main (), { ,try { await 才能;compressing.gzip.compressFile (& # 39; nodejs-compressing-demo/lib/urllib.js& # 39;, ,,& # 39;nodejs-compressing-demo/lib/urllib.js.gz& # 39;); console.log才能(& # 39;成功# 39;); ,}catch (错),{ console.error才能(错); ,} ,//解压缩 ,try { await 才能;compressing.gzip.uncompress (& # 39; nodejs-compressing-demo/lib/urllib.js.gz& # 39;, ,,& # 39;nodejs-compressing-demo/lib/urllib.js2& # 39;); console.log才能(& # 39;成功# 39;); ,}catch (错),{ console.error才能(错); ,} } main ();如何基于node . js实现压缩和解压缩的方法