0

我正在研究一個擁有大約10K行JavaScript代碼(不考慮第三方庫)的大型Web應用程序。爲了加快頁面加載速度,已決定將每個腳本文件自動連接成一個大型腳本,該腳本在第一次訪問應用程序時在客戶端上加載(並緩存)。由於每個頁面都有自己的腳本,其中包含了(實質上)相同功能中所需的所有JavaScript,因此這帶來了問題。
現在,如果在其中一個腳本中發生錯誤,則很難確定錯誤來自哪裏,因爲所有內容都被放入與每個頁面相同的腳本中,而不是在每個頁面中使用明確的script聲明作爲之前完成。
有解決此問題的JavaScript模式嗎?我正在考慮類似於可以綁定到Web應用程序頁面中某些容器的AngularJS模塊。
但是,我想要一個簡單的自定義解決方案,因爲我們時間不夠,而且我們沒有時間在應用程序中實現框架。它應該只將特定的腳本(模塊)應用到它們各自的頁面,並且它應該允許開發者明確地聲明特定腳本所依賴的任何其他腳本(模塊)。另外,實現一個異常處理系統來通知用戶(例如在Firebug控制檯中)從哪個模塊發出異常(如果頁面的模塊依賴於其他模塊)會很好。 有沒有解決JavaScript中的這些問題(不依賴於框架)的常見手段?將JavaScript腳本綁定到它們各自的網頁

+0

對於開發,您可以捆綁腳本但不能縮小它們。那麼當你遇到錯誤時,你將能夠看到實際的代碼。對於生產用途,那麼最好不要有任何例外:) – Pointy

+0

是的,這是我們這樣做的方式,但仍然很難跟蹤其中一個腳本中的錯誤(有10000行代碼)if出了點問題。如果開發人員在對應於特定頁面的腳本中犯了錯誤,那麼他可能會在完全不同的地方得到錯誤,因爲所有頁面上都加載了所有內容。 – Bogdan

+1

看看[Grunt](http://gruntjs.com/)和[AMD/require.js](http://requirejs.org/docs/whyamd.html) – madhead

回答

0

您的問題可能的解決方案可能是使用js源地圖。許多concat/minify/uglify工具直接支持此功能,而大多數現代瀏覽器都可以解釋它們。

你仍然會成爲一個包含所有你的代碼(即使這是最有可能不來處理如此大量的代碼是最好的主意 - 在很大程度上取決於你的整體架構)的單個JS文件

但你的瀏覽器開發者工具現在可以顯示錯誤/控制檯輸出/ etc的原始文件名和行號。

您可能很可能不會在生產中提供源映射文件。

進入js源地圖的好點是this wiki

相關問題