通過(guò)繼承IHttpHandle實(shí)現(xiàn)JS插件的組織與管理
更新時(shí)間:2010年07月13日 20:06:29 作者:
最近,項(xiàng)目中的用到的Js插件越來(lái)越多,有的是用原生javascript寫(xiě)的,有的是調(diào)用的jquery插件,頁(yè)面上Js和Css文件的引用也越來(lái)越混亂,而且Js文件之間還有引用先后的依賴關(guān)系
如:
<!— Js插件 -->
<script type="text/javascript" src="/scripts/popup.js"></script>
<script type="text/javascript" src="/scripts/popup-util.js"></script>
<!—Jquery插件 -->
<script type="text/javascript" src="/scripts/jquery-1.3.2.js"></script>
<script type="text/javascript" src="/scripts/jquery.autocomplete/ jquery.autocomplete.js">
</script>
<link type="text/css" rel="stylesheet" href="/scripts/jquery.autocomplete/jquery.autocomplete.css" />
<script type="text/javascript" src="/scripts/jquery.tip/jquery.tip.js"></script>
<link type="text/css" rel="stylesheet" href="/scripts/jquery.tip/jquery.tip.css" />
有時(shí),頁(yè)面上引用的Js文件會(huì)更多,如果頁(yè)面排版的整齊還好點(diǎn),一旦排版的稍微不整齊,那么整個(gè)頁(yè)面就顯得很雜亂,那么究竟有沒(méi)有更簡(jiǎn)潔的方法引用Js文件呢?本文就討論一下這個(gè)問(wèn)題。
開(kāi)始做之前先在cnblogs上搜索了一下,果然有相關(guān)文章介紹:http://www.dbjr.com.cn/article/24220.htm,不過(guò)本篇文章的博主不是很厚道(^_^),雖然給了一個(gè)demo下載,但是是編譯后的程序,看不到源碼,看不到源碼也就算了,運(yùn)行還出錯(cuò),后來(lái)經(jīng)過(guò)嘗試,demo程序中還少一個(gè)script.do文件,并且還需要在IIS中配置“.do”的應(yīng)用程序擴(kuò)展,方法如下:在IIS中選擇所建的網(wǎng)站,右鍵單擊“屬性”如下圖:

說(shuō)歸正題,雖然只給了一個(gè)編譯后的demo程序,但經(jīng)過(guò)反編譯查看代碼后,還是為本人重新實(shí)現(xiàn)功能提供了一些好的建議,在此還是要對(duì)那篇文章的博主表示感謝^_^,接下來(lái)看一下本人是如果組織和管理JS文件的:
1. 在頁(yè)面上需要添加一句引用:<script type="text/javascript" src="/Scripts/JsPlugins.js?plugins=popup&jqPlugins=autocomplete,tip"></script>
說(shuō)明:參數(shù)plugins后面賦值的是原生js寫(xiě)的插件名,多個(gè)插件可以用逗號(hào)“,”隔開(kāi);
參數(shù)jqPlugins后面賦值的是jquery的插件名,同樣,多個(gè)jquery插件名可以用逗號(hào)“,”隔開(kāi)。
2. 為項(xiàng)目添加Js配置文件,如下:
<?xml version="1.0" encoding="utf-8" ?>
<script path="/scripts/">
<!-- javascript 插件 -->
<plugins name="javascript" file="">
<!-- 百度的彈出層 -->
<plugin name="popup" file="popup-min.js">
<require file="popup-util.js"></require>
</plugin>
</plugins>
<!-- jquery 插件 -->
<plugins name="jquery" file="jquery-1.3.2.js"> color: #000000;">
<!--自動(dòng)完成-->
<plugin name="autocomplete" file="plugins/autocomplete/jquery.autocomplete.js">
<require file="plugins/autocomplete/jquery.autocomplete.css"></require>
</plugin>
<!--提示框-->
<plugin name="tip" file="plugins/tip/jquery.tip.js">
<lazy file="plugins/tip/bs.css"></lazy>
</plugin>
</plugins>
</script>
3. 在項(xiàng)目的web.config文件中添加HttpHandle,如下:
<appSettings>
<add key="JsConfig" value="~/Config/JsConfig.xml"/>
</appSettings>
和
<httpHandlers>
<add verb="*" path="JsPlugins.js" type="ScriptLoader.ScriptPluginHandle,ScriptLoader"/>
</httpHandlers>
另外,本人在實(shí)現(xiàn)的過(guò)程中還做了以下幾方面改進(jìn):
1. 兼容IE6、IE7、IE8、Firefox、Safari、Opera瀏覽器(經(jīng)測(cè)試,文中提到的那個(gè)demo程序在IE6下功能失效)
2. 使用了匿名回調(diào)函數(shù),避免了與加載的Js文件中的方法重名
3. 可以同時(shí)調(diào)用原生js插件和jquery插件,前提是兩者不會(huì)產(chǎn)生沖突
具體實(shí)現(xiàn)大家可以下載源碼,本源碼的開(kāi)發(fā)環(huán)境VS2008 + ASP.NET MVC 1.0
復(fù)制代碼 代碼如下:
<!— Js插件 -->
<script type="text/javascript" src="/scripts/popup.js"></script>
<script type="text/javascript" src="/scripts/popup-util.js"></script>
<!—Jquery插件 -->
<script type="text/javascript" src="/scripts/jquery-1.3.2.js"></script>
<script type="text/javascript" src="/scripts/jquery.autocomplete/ jquery.autocomplete.js">
</script>
<link type="text/css" rel="stylesheet" href="/scripts/jquery.autocomplete/jquery.autocomplete.css" />
<script type="text/javascript" src="/scripts/jquery.tip/jquery.tip.js"></script>
<link type="text/css" rel="stylesheet" href="/scripts/jquery.tip/jquery.tip.css" />
有時(shí),頁(yè)面上引用的Js文件會(huì)更多,如果頁(yè)面排版的整齊還好點(diǎn),一旦排版的稍微不整齊,那么整個(gè)頁(yè)面就顯得很雜亂,那么究竟有沒(méi)有更簡(jiǎn)潔的方法引用Js文件呢?本文就討論一下這個(gè)問(wèn)題。
開(kāi)始做之前先在cnblogs上搜索了一下,果然有相關(guān)文章介紹:http://www.dbjr.com.cn/article/24220.htm,不過(guò)本篇文章的博主不是很厚道(^_^),雖然給了一個(gè)demo下載,但是是編譯后的程序,看不到源碼,看不到源碼也就算了,運(yùn)行還出錯(cuò),后來(lái)經(jīng)過(guò)嘗試,demo程序中還少一個(gè)script.do文件,并且還需要在IIS中配置“.do”的應(yīng)用程序擴(kuò)展,方法如下:在IIS中選擇所建的網(wǎng)站,右鍵單擊“屬性”如下圖:

說(shuō)歸正題,雖然只給了一個(gè)編譯后的demo程序,但經(jīng)過(guò)反編譯查看代碼后,還是為本人重新實(shí)現(xiàn)功能提供了一些好的建議,在此還是要對(duì)那篇文章的博主表示感謝^_^,接下來(lái)看一下本人是如果組織和管理JS文件的:
1. 在頁(yè)面上需要添加一句引用:<script type="text/javascript" src="/Scripts/JsPlugins.js?plugins=popup&jqPlugins=autocomplete,tip"></script>
說(shuō)明:參數(shù)plugins后面賦值的是原生js寫(xiě)的插件名,多個(gè)插件可以用逗號(hào)“,”隔開(kāi);
參數(shù)jqPlugins后面賦值的是jquery的插件名,同樣,多個(gè)jquery插件名可以用逗號(hào)“,”隔開(kāi)。
2. 為項(xiàng)目添加Js配置文件,如下:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<script path="/scripts/">
<!-- javascript 插件 -->
<plugins name="javascript" file="">
<!-- 百度的彈出層 -->
<plugin name="popup" file="popup-min.js">
<require file="popup-util.js"></require>
</plugin>
</plugins>
<!-- jquery 插件 -->
<plugins name="jquery" file="jquery-1.3.2.js"> color: #000000;">
<!--自動(dòng)完成-->
<plugin name="autocomplete" file="plugins/autocomplete/jquery.autocomplete.js">
<require file="plugins/autocomplete/jquery.autocomplete.css"></require>
</plugin>
<!--提示框-->
<plugin name="tip" file="plugins/tip/jquery.tip.js">
<lazy file="plugins/tip/bs.css"></lazy>
</plugin>
</plugins>
</script>
3. 在項(xiàng)目的web.config文件中添加HttpHandle,如下:
<appSettings>
<add key="JsConfig" value="~/Config/JsConfig.xml"/>
</appSettings>
和
<httpHandlers>
<add verb="*" path="JsPlugins.js" type="ScriptLoader.ScriptPluginHandle,ScriptLoader"/>
</httpHandlers>
另外,本人在實(shí)現(xiàn)的過(guò)程中還做了以下幾方面改進(jìn):
1. 兼容IE6、IE7、IE8、Firefox、Safari、Opera瀏覽器(經(jīng)測(cè)試,文中提到的那個(gè)demo程序在IE6下功能失效)
2. 使用了匿名回調(diào)函數(shù),避免了與加載的Js文件中的方法重名
3. 可以同時(shí)調(diào)用原生js插件和jquery插件,前提是兩者不會(huì)產(chǎn)生沖突
具體實(shí)現(xiàn)大家可以下載源碼,本源碼的開(kāi)發(fā)環(huán)境VS2008 + ASP.NET MVC 1.0
相關(guān)文章
ES6數(shù)組與對(duì)象的解構(gòu)賦值詳解
這篇文章主要介紹了ES6數(shù)組與對(duì)象的解構(gòu)賦值,結(jié)合實(shí)例形式詳細(xì)分析了ES6中數(shù)組與對(duì)象的解構(gòu)賦值原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06兼容FireFox 用javascript寫(xiě)的一個(gè)畫(huà)圖函數(shù)
兼容FireFox 用javascript寫(xiě)的一個(gè)畫(huà)圖函數(shù)...2007-08-08Underscore.js 的模板功能介紹與應(yīng)用
Underscore是一個(gè)非常實(shí)用的JavaScript庫(kù),提供許多編程時(shí)需要的功能的支持,他在不擴(kuò)展任何JavaScript的原生對(duì)象的情況下提供很多實(shí)用的功能,需要了解的朋友可以詳細(xì)參考下2012-12-12