[OpenSource]ScriptLoaderV2:徹底改變你的編程習慣

來源:互聯網
上載者:User

摘要:

[OpenSource]ScriptLoader: 輕鬆管理你的js 類庫一文發布後,有的園友反映,侵入性還是有點太強。昨天晚上半夜想到一個不錯的點子,越想越睡不著,最終還是爬起來把ScriptLoader升級到了V2,這個版本將給你更便利的指令檔組織體驗,增加了自動關聯、多語言支援途徑、誘人的Syntactic Sugar,使用ScriptLoader將改變你以往的編程習慣^_^。

簡介:

ScriptLoaderV2增加一些新特性:

  1. 對Aspx無侵入性的指令碼引入機制。
  2. 多語言資源的支援途徑。
  3. 讓你更容易load module的Syntactic Sugar。

 

無侵入的指令碼引入機制:

當前我們的指令碼組織方式,一般是每個aspx都會通過script標籤引入一些js核心類庫,然後在aspx頁面裡面混雜一些當前頁面所需的商務邏輯指令碼。

這樣子的寫法導致js和我們的aspx進行了太緊密的結合,同時也不利於整個項目的維護。針對此,ScriptLoader提供了一個HttpModule來結合進行js的引入。當讀入WebForm1.aspx的時候會自動幫你Load同目錄下的WebForm1.aspx.js檔案,因為是經過ScriptLoader匯入的,所以具備ScriptLoader的特點,比如緩衝,只要你的webForm1.aspx.js最後修改日期沒有變,就可以一直利用用戶端的緩衝。

不過你可能會想到這樣一種情況:

我們經常使用<%=this.TxtName.ClientID%>這種方法來擷取服務端控制項在用戶端的唯一id,那這個情況在外部引入的js是沒辦法使用的,所以我引入了ScriptLoaderV2的第二個特性。

多語言資源的支援途徑:

通過ScriptLoader.SetVariable方法進行賦值。

相關的方法還有

如果你用到了這個特性,那會產生侵入性了,如果你不想產生侵入性,你也可以使用Asp.Net原始的方法:

那這個特性跟多語言又有什麼關係呢?

因為這其中有個方法是讀取xml設定檔直接設定變數的,xml如下:

讀入的代碼:

因此,如果你想對這些變數做根據不同的語言做不同的賦值的話,就可以多寫幾個config,比如myVars-en-US.config,myVars-zh-cn.config,然後根據不同語言版本載入不同的變數,而js中需要做多語言的都用變數代替字元常量。

 

當然這還有更好的整合方式,就是把頁面組織圖改成如下形式

然後就像第一個特性一樣,自動根據語言版本載入不同js或者config,目前未增加這個特性,因為還沒有辦法考慮到有些什麼特殊情況,所以還不準備增加此特性,不過這個的修改也是很快的,如果你有需要可以自行下載代碼,進行修改,如果能把你的應用情況反饋給我,那自然更好了。時機成熟,我會考慮直接整合進ScriptLoader的代碼。

變數的問題解決了,但是每個商務邏輯的js不可能離開一些核心的js類庫,比如例子中的

我需要在當前頁面引入jquery類庫,那怎麼辦?為瞭解決這個問題,ScriptLoader增加第三個特性。

Syntactic Sugar:

所謂Syntactic Sugar,就是一種取巧的做法,有點像Vs2008中的自動屬性

其實這不是標準的語言庫支援的特性,是Vs2008這個IDE為我們提供的一種便利通道。在ScriptLoader中為瞭解決引入指令碼的問題也加入類似的特性:

可以看到在WebForm2.aspx.js中的頭部,使用了一個叫using的方法,引入了3個在我們lib.config中配置的js module。

這個Syntactic Sugar只能用在WebForm2.aspx.js這中類型的js中,不是所有js類庫都可以使用,ScriptLoader會在為aspx頁面注入ScriptLoader的時候,進行分析,然後自動幫你Load這些模組。核心的類庫還是必須通過lib.config/user.config進行配置的,這樣子你才可以使用using(moduleName)來引入這些指令碼。

後記:

我是標題黨,呵呵,不要批我的標題。

如果你使用ScriptLoader的這些特性,確實可以改善你的很多js檔案組織體驗。現在大部分js類庫更加關心功能的封裝,但是對於js檔案的組織管理甚少關注,ScriptLoader就是為了填補這個空白而出現的。

後續的版本會增加更多讓你心動的特性,比如ClientCacheManager

Examples包含在src發布包中,你也可以通過svn擷取ScriptLoader最近的版本

Http://www.sourceforge.net/projects/scriptloader

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.