2011-12-28 231 views
3

我試圖理解JavaScript縮小和壓縮處理,並有幾個問題對這些:JavaScript的縮小和壓縮

  1. 由於微小使得代碼難以調試,是有可能的按需做去在客戶端進行縮小以掩蓋實際需要在網站上進行調試和調查的情況?
  2. 我記得在某處可以通過在Apache Web Server中設置一些選項來啓用所有資源的壓縮(如圖像,CSS,JavaScript等)。在Apache級別完成的JavaScript壓縮和使用YUI Compressor這樣的工具完成的壓縮有什麼區別?

有人可以幫助我瞭解上述情況嗎?

我真的需要去縮小我的JavaScript文件的種類情況是讓我們說一個JavaScript錯誤發生在第n行。 X.對於縮小的文件,知道哪個代碼塊在生產中導致該錯誤是非常困難的,因爲這些行全部包含在縮小文件中。你們如何在這種情況下進行調查和調試?另一位用戶在Packed/minified javascript failing in IE6 - how to debug?問題中也提到了這個調試問題(雖然對IE6略有特殊)。

回答

2

由於微小使得代碼難以調試,是有可能 做在客戶端點播去縮小到掩蓋了,你確實需要調試的情況下 和調查的 東西網站?

的排序。 Minified JavaScript具有相同的結構,它只是像刪除額外的空格和縮短變量名稱之類的事情。因此,您可以輕鬆地使代碼再次可讀,無論是手動還是使用腳本,但無法恢復變量名稱,因此代碼仍然難以使用。所以,如果你有原始代碼,絕對不要去掉它。分別保存縮小的代碼。

我記得讀書的地方,一個可以讓所有 資源的壓縮(如圖像,CSS,Javascript代碼等),通過設置在Apache Web服務器的一些選項 。

是的,它被稱爲gzip壓縮。它不是唯一的apache,但你需要配置你的服務器來啓用它。

在Apache 級別完成的javascript壓縮和使用YUI Compressor這樣的工具完成的壓縮有什麼區別嗎?

是的。 YUI壓縮機是一個縮小器 - 輸出是有效的JavaScript。服務器端壓縮更類似於壓縮文件 - 瀏覽器必須先解碼才能使用它。一起使用這兩個將產生最小的文件大小。

+0

你回答了我的所有問題,因此接受了這個答案。謝謝! – peakit 2011-12-29 19:36:06

3

通常開發人員將針對未壓縮的腳本文件進行開發,在部署前進行壓縮。

如果你必須回去調試你的腳本文件,你只需打開常規的未壓縮文件,完成你的工作,壓縮和部署。如果您的意思是在您的網站處於生產的情況下調試某些內容,則不需要,則無法根據需要取消縮小腳本文件。

是的,Apache甚至IIS都可以自動爲您自動壓縮腳本和圖像。

+0

我喜歡現代[Rails](http://rubyonrails.org)如何處理資產。它gzips和時間戳它們。生產中沒有更多的燃燒CPU。它也是緩存友好的。 – 2011-12-28 17:12:44

+0

在另一種生活中,我認爲我是一個RoR開發者......在這個生活中,它是MVC,基本上是C#的Rails ......可能會更糟......:) – 2011-12-28 17:14:28

+0

@Adam,檢出'OriginalSyn'的答案之一,好像Chrome可以幫助您_partially_去縮小javascript文件 – peakit 2011-12-28 17:37:55

8

您不應該調試縮小的代碼。理想情況下,開發過程如下:

  1. 您在本地構建和調試站點。你有完整版本的JavaScript,樣式表和一切。

  2. 您將版本部署到生產機器。您縮小並gzip您的資產的副本,並將其推送到服務器。您的本地開發副本保持不變。

  3. 如果生產中存在錯誤,則修改本地版本,縮小,壓縮和上傳。

重複,直到利潤

+0

+1爲利潤:) – 2011-12-28 17:13:56

+0

@Sergei Tulentsev,我已經給出了我在上面的問題編輯部分提到的調試的更多細節。你可以看看這個,並且告訴我如何去做這件事嗎?謝謝。 – peakit 2011-12-28 17:51:09

+0

我會執行以下操作之一:1)在某處複製生產環境,並嘗試用完整的javascripts重現問題。 2)將完整的javascripts複製到製作,並在**你**登錄(並繼續使用所有其他人的縮小版本)時呈現給他們。 – 2011-12-28 17:59:54

1
  1. 我喜歡與JS文件的本地副本unminified工作,當我部署站點,我再壓縮所有JS-文件合併爲一個。這樣就很容易調試和改進代碼。但是,有些工具可以恢復縮小。看看這個SO post關於恢復縮小的JavaScript。
  2. 看看GZIP壓縮 - This blog描述如何在Apache中啓用GZIP以及如何驗證您的服務器實際上是否在壓縮文件。
1

是有可能做點播去縮小在客戶端

有些瀏覽器有一個「漂亮的代碼」視圖,自動格式化源代碼。請參閱Firebug的CSS選項卡。

在Apache級別完成的JavaScript壓縮和使用YUI Compressor這樣的工具完成的壓縮有什麼區別嗎?

YIU壓縮機實際上是一個縮小器。 Apache壓縮就像在將文件發送到客戶端之前壓縮文件一樣,因此發送的實際文件比磁盤上的文件小。它們是兩種彼此獨立的不同技術。

4

Chrome開發工具可以反混淆,如果你要調試的生產代碼

(試圖複製在現場環境中,您可能不會在開發中會看到一個錯誤時有用)JavaScript代碼(和去縮小) enter image description here enter image description here

+0

+1感謝分享:) – peakit 2011-12-28 17:29:36