我想爲我的web應用程序使用內容網站保護。如果您還沒有聽說過它,簡而言之:它將允許我禁用任何嵌入式JavaScript到我的Web應用程序中,從而幫助阻止XSS。Javascript和CSP - 最佳實踐
結果是,我所有的javascript代碼都必須在外部文件中。
大多數JavaScript'庫/框架'代碼已經存在,但通常我的頁面至少包含幾行JS代碼,實例化與特定頁面相關的組件。
例如,我有一個假設的註冊頁面。在註冊頁面的底部,我有以下代碼:
var registrationForm = new MyApp.registrationValidator($('.regform'));
registrationForm.init();
這個假設代碼獲取登記表格的引用,可以註冊所有的驗證代碼。
現在我必須將此代碼移動到外部文件。我可以:
選項A:爲每個頁面創建一個小的.js文件,該文件只執行該頁面特定的代碼。
- 優點 - 簡單較快
- 缺點 - 每一頁這一個額外的js文件,我更喜歡能夠爲我所有的JavaScript減少到一個單一的文件,以減少請求。
選項B:在JavaScript文件中執行我所有的'實例化代碼'。我只會檢測頁面上是否有'.regForm'css類,並且只有在頁面上出現對象時纔會實例化對象。
- 優點 - 用於實例化的單個位置。如果頁面上的組件具有正確的css類,它將奇蹟般地開始工作。
- 缺點 - 如果我的應用程序增長很多,將會有很多初始化代碼可能不需要用於特定頁面。
選項C:給我<body>
標籤的ID或類,並執行基於一個大的交換機上的正確的代碼。
- 優點:仍然可以壓縮爲一個.js文件,而且我不需要每頁.js文件。
- 缺點:我想我覺得這有點難看。
總之,選項B是最好的,如果它不是因爲我覺得有一大堆初始化代碼是個壞主意。
我主要想知道的是,你有這種情況的經歷,你是如何解決它的?
謝謝!這是一個很好的建議,也是一個很好的解決問題的項目。儘管我覺得我最終能夠給用戶一個大的js包,而不是爲大多數頁面提供新的下載。 – Evert 2012-02-07 11:04:21