通過(guò)繼承IHttpHandle實(shí)現(xiàn)JS插件的組織與管理
更新時(shí)間:2010年07月13日 20:06:29 作者:
最近,項(xiàng)目中的用到的Js插件越來(lái)越多,有的是用原生javascript寫的,有的是調(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.fzitv.net/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寫的插件名,多個(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.fzitv.net/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寫的插件名,多個(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)文章
JavaScript更改原始對(duì)象valueOf的方法
這篇文章主要介紹了JavaScript更改原始對(duì)象valueOf的方法,涉及javascript使用自定義valueOf函數(shù)替換掉原始o(jì)bject中valueOf的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
JavaScript評(píng)論點(diǎn)贊功能的實(shí)現(xiàn)方法
通過(guò)分析評(píng)論功能的邏輯關(guān)系,學(xué)會(huì)如何使用JavaScript實(shí)現(xiàn)評(píng)論、回復(fù)、點(diǎn)贊等各種功能。這篇文章主要介紹了JavaScript評(píng)論點(diǎn)贊功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-03-03
基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效
這篇文章主要為大家詳細(xì)介紹了基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
JavaScript實(shí)現(xiàn)AOP詳解(面向切面編程,裝飾者模式)
下面小編就為大家分享一篇JavaScript實(shí)現(xiàn)AOP的方法(面向切面編程,裝飾者模式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
js對(duì)象數(shù)組根據(jù)對(duì)象屬性刪除對(duì)象
這篇文章主要介紹了js對(duì)象數(shù)組根據(jù)對(duì)象屬性刪除對(duì)象,需要的朋友可以參考下2023-07-07
前端使用國(guó)密sm2和sm4進(jìn)行加解密代碼示例
在前端實(shí)現(xiàn)加密算法時(shí),需要特別注意密鑰的安全存儲(chǔ)和管理,不應(yīng)將敏感的密鑰硬編碼在前端代碼中,這篇文章主要介紹了前端使用國(guó)密sm2和sm4進(jìn)行加解密的相關(guān)資料,需要的朋友可以參考下2025-04-04
webpack4.0+vue2.0利用批處理生成前端單頁(yè)或多頁(yè)應(yīng)用的方法
這篇文章主要介紹了webpack4.0+vue2.0利用批處理生成前端單頁(yè)或多頁(yè)應(yīng)用的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06

