寫在前面
不管是做前端的還是做後臺的,不管是懂javaScript的還是不太懂JavaScript的人,我想都或多或想的知道些許js壓縮對於頁面效能提升的效應吧。
之前老喜歡用線上壓縮工具去壓縮js,其實想想之前的這個做法就有些不寒而慄,假設一下,如果一個專案中的js有50個的話,你要去用線上壓縮工具壓縮js50次嗎?僅僅釋出一次就壓縮50次,那是不是每個釋出專案的時候都要去做這個工作,這是多麼重複而雙乏味的事情。
再假設,不同頁面上引用了相同的n個js,如果我們只是按照單獨的js去壓縮的話,那是不是。。。
事實上我們更希望有這樣一個工具幫助我們來壓縮js,而這個工具只需要我們點選一下就可以了,然後它就會按照我們設定好的規則去自動壓縮js,再之後我們就可以輕鬆的將這些壓縮好的js釋出到站點。
所謂的磨刀誤砍柴工,下面我們就來看看這個工具的實現原理吧!(具體規則你們按照自己專案的需要去定哦)
.net壓縮js和css相關的DLL
大家百度一下關鍵字“Yahoo.Yui.Compressor”下載相關的DLL,當然也可以下載我上傳的
具體實現原理(簡單的例子如下所示)
var js = new JavaScriptCompressor(); js.CompressionType = CompressionType.Standard;//壓縮型別 js.Encoding = Encoding.UTF8;//編碼 js.IgnoreEval = false;//大小寫轉換 js.ThreadCulture = System.Globalization.CultureInfo.CurrentCulture; string file = @"F:\angelaTestProject\AngelaDemo20150509\AngelaDemo20150509\javascrptDemo\ajax.js";//這是你需要壓縮的檔案 FileInfo finfo = new FileInfo(file); string strContent = File.ReadAllText(file, Encoding.UTF8); strContent = js.Compress(strContent); string newflie = @"F:\angelaTestProject\AngelaDemo20150509\AngelaDemo20150509\javascrptDemo\ajax.min.js";//這是已經存在的js檔案(儲存你壓縮的js) File.SetAttributes(newflie, FileAttributes.Normal); File.WriteAllText(newflie, strContent, Encoding.UTF8);
說說後話
上面只是說了引用Yahoo相關的壓縮dll,可以用來壓縮js和壓縮CSS,那麼回到我們最初的話題,怎樣做一個工具來實現將多個檔案壓縮壓縮成一個檔案呢,其實這個實在是太簡單了,有些事情事實上只要我們知道原理,其它的只是不同的方法罷了,比如說我們可以做一個c# windows窗體程式,讓使用者自己輸入原js檔案所在的路徑(可單選也可多選),然後輸入壓縮後的js檔案所在的路徑。
當然這個方法不夠靈活,也可以用xml檔案來配置我們的規則,然後我們的工具根據我們配置的規則來進行壓縮。
最後我們頁面上引用的只是壓縮好的js地址。
可能我文采不夠好,也說的比較簡單。事實上原理就是這麼簡單,只是用的人選擇的道路不一樣,走出不一樣的風景罷了。
附錄js壓縮工具
http://prettydiff.com/?m=beautify&s=http://prettydiff.com/prettydiff.js
http://yui.github.io/yuicompressor/
附錄js反壓縮工具
http://javascriptbeautifier.com/