.net 運用YUI相關的dll壓縮js (按照自己的規則,想想都覺得強大和有趣)

靜逸發表於2015-05-25

寫在前面

不管是做前端的還是做後臺的,不管是懂javaScript的還是不太懂JavaScript的人,我想都或多或想的知道些許js壓縮對於頁面效能提升的效應吧。

之前老喜歡用線上壓縮工具去壓縮js,其實想想之前的這個做法就有些不寒而慄,假設一下,如果一個專案中的js有50個的話,你要去用線上壓縮工具壓縮js50次嗎?僅僅釋出一次就壓縮50次,那是不是每個釋出專案的時候都要去做這個工作,這是多麼重複而雙乏味的事情。

再假設,不同頁面上引用了相同的n個js,如果我們只是按照單獨的js去壓縮的話,那是不是。。。

事實上我們更希望有這樣一個工具幫助我們來壓縮js,而這個工具只需要我們點選一下就可以了,然後它就會按照我們設定好的規則去自動壓縮js,再之後我們就可以輕鬆的將這些壓縮好的js釋出到站點。

所謂的磨刀誤砍柴工,下面我們就來看看這個工具的實現原理吧!(具體規則你們按照自己專案的需要去定哦)

.net壓縮js和css相關的DLL

大家百度一下關鍵字“Yahoo.Yui.Compressor”下載相關的DLL,當然也可以下載我上傳的

 Yahoo.Yui.Compressor

具體實現原理(簡單的例子如下所示)

            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/

http://jscompress.com/

附錄js反壓縮工具

http://jsbeautifier.org/

http://javascriptbeautifier.com/

如果您覺得本篇博文對您有所收穫,覺得小女子還算用心,請點選右下角的 [推薦],謝謝!

相關文章