通过继承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 22 Javascript
JavaScript中void(0)的具体含义解释
Feb 27 Javascript
filemanage功能中用到的lib.js
Apr 08 Javascript
改善用户体验的五款jQuery插件分享
May 22 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
JavaScript实现单点登录的示例
Sep 23 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
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
php生成HTML文件的类方法
2019/10/11 PHP
PHP 实现链式操作
2021/03/09 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
nodejs基础应用
2017/02/03 NodeJs
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
微信小程序录音与播放录音功能
2017/12/25 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python学习入门之区块链详解
2017/07/25 Python
python实现list由于numpy array的转换
2018/04/04 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
django使用JWT保存用户登录信息
2020/04/22 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
大家访活动实施方案
2014/03/10 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
保护地球的标语
2014/06/17 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
交心谈心活动总结
2015/05/11 职场文书
医院保洁员管理制度
2015/08/05 职场文书