通过继承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页面上使用动态时间具体实现
Mar 18 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
JavaScript中标识符提升问题
Jun 11 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
JS中cookie的使用及缺点讲解
May 13 Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 Javascript
js时间转换毫秒的实例代码
Aug 21 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
javascript 设计模式之享元模式原理与应用详解
Apr 08 Javascript
javascript实现贪吃蛇小游戏
Jul 28 Javascript
js实现抽奖功能
Nov 24 Javascript
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
深入了解php4(2)--重访过去
2006/10/09 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
python的id()函数解密过程
2012/12/25 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
Delphi软件工程师试题
2013/01/29 面试题
优秀毕业生自我鉴定
2014/01/19 职场文书
新年爱情寄语
2014/04/08 职场文书
2014年林业工作总结
2014/12/05 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
《所见》教学反思
2016/02/23 职场文书
Java spring单点登录系统
2021/09/04 Java/Android
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
GO中sync包自由控制并发示例详解
2022/08/05 Golang