2013-03-16 73 views
0

我需要手動連接幾個JavaScript代碼塊。有什麼我應該考慮做的?手動連接JavaScript的安全方式?

例如,是否將每個塊包裝在立即執行的函數中並將其作爲;的前綴?

還有什麼要注意避免連接版本出現問題?

+1

爲什麼不使用像UglifyJS這樣的縮小器? 'cat file1.js file2.js | uglifyjs -o out.js' – elclanrs 2013-03-16 09:46:07

+0

當然,我可以使用縮小器來完成這項工作,但我很好奇。所以它只是出於興趣,學習:-)。 – 2013-03-16 09:48:09

+0

如果你在控制這些代碼段,那麼應該這樣做。 – elclanrs 2013-03-16 09:50:00

回答

0

請記住,其中一個塊中的語法錯誤將阻止整個代碼運行。

在函數內包裝每個塊可能會破壞預計在全局範圍內運行的代碼寫得不好。

要處理語法錯誤,最好的方法是使用代碼編譯器(例如YUI Compressor或Google Closure Compiler)來處理每個代碼塊,事先收到任何語法錯誤通知並減少它們的字節長度而你在這裏。

任何這樣的工具輸出的代碼是高度標準化的,可能在正確的地方有所有分號。然後您可以只連接壓縮版本。

然後,您將需要處理運行時錯誤(異常),由一段代碼生成並停止執行所有後續塊。要解決這個問題,只需將每個代碼塊包裝在try {...} catch (err) {}中,以便在出現錯誤時繼續執行到下一個塊。

您可以在代碼編譯階段之前或之後執行此操作。

+0

但即使這些工具也必須遵循一些最佳實踐,不是嗎?正如我所指出的那樣,我對如何避免手動操作並不感興趣,但在瞭解需要注意的方面。當然,這些工具可以解決問題,所以我不必再這樣做了,但基本上它只能將問題轉移到另一個層面。 – 2013-03-16 09:51:56

+1

問題非常複雜。如果其中一個塊在某處丟失了一個近似括號'},並且後面的塊太多了,那麼該怎麼辦?它會以意想不到的方式更改所有這些塊的代碼,假設它不會導致語法錯誤。這就是爲什麼我建議使用一種工具來檢查每個單獨塊的語法並以標準方式重新格式化它的代碼。手工操作非常容易出錯。 – Tobia 2013-03-16 09:55:19

+0

好的,謝謝你的解釋:-)! – 2013-03-16 10:02:38