JS,html壓縮及混淆工具


現在已經出現了不少有自己特色的:

有些太簡單的、基於某主流思路仿寫(但又未能超越原作的更新版本)的或者Bug太多的我就不列出了。比如用PHP實現的某幾種,失敗的時候往往比成功要多。(Xee:有時候你會發現壓縮代碼之后,程序運行不正常了,比較壓縮這個東西不可能完美!但是我們又不能不用~~)

----------------------------------------------------------------------------------------☜☞--------------------------------------------------------------------------------

Dean Edwards開發的javascript packer是用在jquery相關項目中最多的packer了。通過這個工具,js文件的大小至少能減少到原來的一半,也就是說壓縮比在50%以上,而且可以防止js代碼被抄襲,真可謂一舉兩得。

Xee:但是注意它可能會壓縮出錯!就像我說的,沒有哪個壓縮工具能完美,使用小心就好,如我所知道的:Closure Compiler對語法的要求比較嚴格,會導致一些Hack技巧無法使用。有篇文章就提到:jquery用的是google的開源js壓縮工具,Google Closure Compiler和YUI compressor 是目前最佳的js壓縮方式。  Dean Edwards‘ packer 是不推薦使用的!!)

我們先來介紹一下什么是JavaScript Packer混淆

packer現在是3.0。它是一個web工具,可以在線進行壓縮。它的使用很簡單:

  1. 進入網站
  2. 粘貼要壓縮的代碼
  3. 執行pack

它還有幾個選項:Base62 encode和Shrink variables。如果這兩個選項不選的話,只是去掉多余的空格,換行,注釋之類的。如果選擇Base62 encode基本上就不可讀了。如果選擇Shrink variables可以壓縮變量,具體它是如何做的我不清楚,不過體積的確會變小。不過在我壓縮jquery.jform.js時,在測試中發現原本應該是ajax的POST方式提交的結果變成了GET方式,太奇怪了。如果換成不壓縮的版本就沒有問題。因此定位是這個packer的問題。於是我沒有選中Base62 encode,而只是選中了Shrink variables,發現在$.ajax的參數中,原本為type的給變成了typf,當我中選中Base62 encode,但沒有選中Shrink variables后,一切正常。

所以我的第一個建議是:當運行出錯時,去掉Shrink variables試試。

另外我的第二個建議是:每個函數后面一定要有分號(';'),每個語句后面如果不是大括號括起來的,一定要有分號。不然在運行時會說是少分號,很麻煩。
這里講了怎么能方便地把分號補全。
http://javascriptcompressor.com/forums/p/19/55.aspx#55 這里推薦的辦法是在壓縮之前先把代碼貼到http://www.jslint.com/ 去做檢查,查出所有缺分號的地方,手動補上。

現在OpenbookPlatform中的許多js代碼我都進行了壓縮,甚至把一些常用的放到了一個full.js文件中,這樣可以減少文件讀取次數,從而提高效率。

Xee:多文件批量壓縮:http://dean.edwards.name/download/中尋找wsh版本, WSH 版本可以從命令行操作!也就是自己寫個腳本然后可以批量操作!強悍吧!!!!!

Xee大笑:Dean Edwards其他一些作品工具中的cssQuery這個工具,有點意思,相比之下,我還是喜歡jQuery的選擇方式。

----------------------------------------------------------------------------------------☜☞--------------------------------------------------------------------------------

最后,有壓縮工具怎么解壓縮呢?

解壓縮(格式化)地址: http://jsbeautifier.org/ & http://lzw.me/pages/demo/jquery_search_suggest_plugin/

<參考:你用哪種 JavaScript Minifier/Packer/Compressor,好用不? & 使用dean的javascript packer的一些體會 & 也談談js的壓縮,jquery壓縮>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM