通过继承IHttpHandle实现JS插件的组织与管理


Posted in Javascript onJuly 13, 2010

如:

<!— 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" />

有时,页面上引用的Js文件会更多,如果页面排版的整齐还好点,一旦排版的稍微不整齐,那么整个页面就显得很杂乱,那么究竟有没有更简洁的方法引用Js文件呢?本文就讨论一下这个问题。

开始做之前先在cnblogs上搜索了一下,果然有相关文章介绍:https://3water.com/article/24220.htm,不过本篇文章的博主不是很厚道(^_^),虽然给了一个demo下载,但是是编译后的程序,看不到源码,看不到源码也就算了,运行还出错,后来经过尝试,demo程序中还少一个script.do文件,并且还需要在IIS中配置“.do”的应用程序扩展,方法如下:在IIS中选择所建的网站,右键单击“属性”如下图:
通过继承IHttpHandle实现JS插件的组织与管理
说归正题,虽然只给了一个编译后的demo程序,但经过反编译查看代码后,还是为本人重新实现功能提供了一些好的建议,在此还是要对那篇文章的博主表示感谢^_^,接下来看一下本人是如果组织和管理JS文件的:

1. 在页面上需要添加一句引用:<script type="text/javascript" src="/Scripts/JsPlugins.js?plugins=popup&jqPlugins=autocomplete,tip"></script>
说明:参数plugins后面赋值的是原生js写的插件名,多个插件可以用逗号“,”隔开;
参数jqPlugins后面赋值的是jquery的插件名,同样,多个jquery插件名可以用逗号“,”隔开。

2. 为项目添加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;"> 
<!--自动完成--> 
<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. 在项目的web.config文件中添加HttpHandle,如下:
<appSettings>
<add key="JsConfig" value="~/Config/JsConfig.xml"/>
</appSettings>

<httpHandlers>
<add verb="*" path="JsPlugins.js" type="ScriptLoader.ScriptPluginHandle,ScriptLoader"/>
</httpHandlers>
另外,本人在实现的过程中还做了以下几方面改进:
1. 兼容IE6、IE7、IE8、Firefox、Safari、Opera浏览器(经测试,文中提到的那个demo程序在IE6下功能失效)
2. 使用了匿名回调函数,避免了与加载的Js文件中的方法重名
3. 可以同时调用原生js插件和jquery插件,前提是两者不会产生冲突

具体实现大家可以下载源码,本源码的开发环境VS2008 + ASP.NET MVC 1.0

Javascript 相关文章推荐
javascript 显示当前系统时间代码
Dec 28 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
jQuery基础知识点总结(DOM操作)
Jun 01 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 Javascript
JavaScript 判断iPhone X Series机型的方法
Jan 28 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
jQuery.Autocomplete实现自动完成功能(详解)
Jul 13 #Javascript
javascript中字符串拼接需注意的问题
Jul 13 #Javascript
转换json格式的日期为Javascript对象的函数
Jul 13 #Javascript
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 #Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 #Javascript
不同浏览器的怪癖小结
Jul 11 #Javascript
return false;和e.preventDefault();的区别
Jul 11 #Javascript
You might like
一个SQL管理员的web接口
2006/10/09 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
JavaScript While 循环基础教程
2007/04/05 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python使用folium excel绘制point
2019/01/03 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
Internet体系结构
2014/12/21 面试题
工艺工程师工作职责
2013/11/23 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
办理收楼委托书范本
2014/10/09 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
拖欠货款起诉状
2015/05/20 职场文书
教师节感想
2015/08/11 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
python自动计算图像数据集的RGB均值
2021/06/18 Python