UglifyJS 和JShaman相比有什么不同?
- UglifyJS主要功能是壓縮JS代碼,減小代碼體積;
- JShaman是專門用于對JS代碼混淆加密,目的是讓JS代碼變的不可讀、混淆功能邏輯、加密代碼中的隱秘數據或字符,是用于代碼保護的。
因此,兩者是完全不同的。只是因為UglifyJS也具備些許混淆能力,常常使人們誤以為它也是混淆加密工具。
用實例演示兩者差別:
例程,文件名:example.js,代碼:
var x = {baz_: 0,foo_: 1,calc: function() {return this.foo_ + this.baz_;}
};
x.bar_ = 2;
x["baz_"] = 3;console.log(x.calc());
用UglifyJS進行壓縮,命令:
uglifyjs example.js -c -m --mangle-props
-c表示啟用壓縮功能
-m表示啟用混淆功能
可以得到如下結果:
var x={o:0,_:1,l:function(){return this._+this.o}};x.t=2,x.o=3,console.log(x.l());
可見,uglifyjs去除了回車換行、將長變量名變成了短變量名,這樣當然就達到了壓縮的效果,但閱讀代碼不受影響,功能邏輯還是很清晰的。
用JShaman對代碼進行混淆加密:
得到的將是無法閱讀的混亂代碼:
當然,無論是用UglifyJS進行壓縮混淆,還是用JShaman進行混淆加密,都不會影響代碼的正常使用。