所在的位置: js >> js发展 >> JS代码压缩,LZW算法

JS代码压缩,LZW算法

JS代码压缩

本文分享一种技术,用于实现JS代码压缩。

该技术使用LZW算法。

LZW算法又叫“串表压缩算法”,简而言之,通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩。

具体的实现方法是:提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,从而减少原始数据大小。应该注意的是,我们这里的编译表不是事先创建好的,而是根据原始文件数据动态创建的,解码时还要从已编码的数据中还原出原来的编译表。

JS代实现LZW算法:

//LZW压缩functionlzw_encode(s){letdict={};letdata=(s+).split();letout=[];letcurrChar;letphrase=data[0];letcode=;for(leti=1,l=data.length;il;++i){currChar=data[i];if(dict[phrase+currChar]!=null){phrase+=currChar;}else{out.push(phrase.length1dict[phrase]

phrase.charCodeAt(0));dict[phrase+currChar]=code;++code;phrase=currChar;}}out.push(phrase.length1dict[phrase]

phrase.charCodeAt(0));for(leti=0,l=out.length;il;++i){out[i]=String.fromCharCode(out[i]);}turnout.join();}//LZW解压functionlzw_decode(s){letdict={};letdata=(s+).split();letcurrChar=data[0];letoldPhrase=currChar;letout=[currChar];letcode=;letphrase;for(leti=1,l=data.length;il;++i){letcurrCode=data[i].charCodeAt(0);if(currCode){phrase=data[i];}else{phrase=dict[currCode]dict[currCode]

(oldPhrase+currChar);}out.push(phrase);currChar=phrase.charAt(0);dict[code]=oldPhrase+currChar;++code;oldPhrase=phrase;}turnout.join();}

使用,压缩和解压JS代码:

varstr=`functionget_copyright(){vardomain="jshaman.


转载请注明:http://www.aierlanlan.com/tzrz/7804.html