2010-11-01 30 views
1

我們正在尋找一種方法來管理我們的asp控件(與RegisterClientScript系列一起使用)不斷增加的javascript代碼。經典的方法是將JavaScript編碼爲c#代碼內的字符串常量,但現在它變得越來越大,並且您不希望在c#字符串中進行開發。在編譯之前將外部文件中的代碼轉換/複製爲字符串形式也有點荒謬。此外,在這些情況下,幾乎相同的代碼會與控件的每個實例進行多次發送。asp控件中的Javascript代碼管理

其他重要的標準是讓腳本自給自足,只有外部依賴於jquery & co,所以不需要在其他地方有控制特定的javascript文件。所有相關部分必須在一個地方。

我個人最好的選擇到目前爲止是有使用Javascript分爲兩個部分:
- 編譯爲嵌入的資源進入裝配式的js文件「後面的代碼」。這比字符串連接慢大約3倍,但是。此外,它還提供緩存和直接從文件的選項,無需重新編譯進行調試。這部分每頁包含控件內嵌一次。
- 微小的初始化代理函數使用特定於控件實例的參數調用主腳本。這些內容也是內聯交付,但每個控件實例一次。

我確定我們不是唯一一個對此撓頭的人。
那麼你怎麼做到這一點?

更新。 擺脫.net的具體情況,情況如下。 我們有一些100多個可重用的服務器端組件,每個組件都可能包含一些JavaScript客戶端功能。這些控件當然不會在每個頁面中使用,因此不希望將javascript包裝到一個公共庫中。另一方面,擁有20+對外部JavaScript文件的引用,每個文件的大小都是1-2Kb,這對於維護和流量的過度消耗也是頭痛的問題。 這就是爲什麼我們想讓組件知道並關心自己的JavaScript包含。另一方面,如果你有一個將這些組件分散到多個庫中的項目,你並不想讓它們依賴於某些特定的文件系統佈局,這當然可能是標準化的,但它的責任太多了對於車輛輪胎來強制你的可樂選擇在一個小餐館,伊莫。

回答

2

如果您有幾個控件重複使用的JavaScript代碼 - 爲什麼您不想在外部的* .js文件中使用該代碼?這將允許您保持格式化,但仍然提供最小化,gzip和客戶端可超級緩存文件。

+0

我第二個這個......外部JS文件是我認爲的方式,如果你需要來自服務器代碼的任何客戶端數據,使用「RegisterClientScript family」作爲全局變量添加它。 – 2010-11-01 10:25:13

+0

我目前最好的選擇是在編輯時將項目中的外部文件準確存在,但作爲運行時的程序集中的嵌入式資源(在調試時從文件系統提供選項),所以我完全同意你關於外部文件。我們對部署dll文件和其他東西(並最終忘記或犯錯)並不滿意。 – durilka 2010-11-01 10:44:31

+0

我對.net開發並不太熟悉,但爲了獲得緊湊型可擴展JavaScript的所有優點,您需要將其放入外部* .js文件中。我會建議他們開始並保持外部文件,並在其中包含他們時引用他們的版本號,以便他們在necs時破壞緩存。否則它們會緩存很長時間。部署應該每次都包含所有靜態內容js/css/images(根據需要進行優化以添加/更新)。 – scunliffe 2010-11-01 13:09:15