通过继承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 相关文章推荐
jquery下onpropertychange事件的绑定方法
Aug 01 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
Mar 29 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
Nov 23 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
详解Vue中添加过渡效果
Mar 20 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
详解wow.js中各种特效对应的类名
Sep 13 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
谈谈node.js中的模块系统
Sep 01 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
967 个函式
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
进一步理解Python中的函数编程
2015/04/13 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python字符串中的单双引
2017/02/16 Python
python的socket编程入门
2018/01/29 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
python实现经典排序算法的示例代码
2021/02/07 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
小学开学典礼主持词
2014/03/19 职场文书
优秀教师演讲稿
2014/05/06 职场文书
入伍通知书
2015/04/23 职场文书
Python Socket编程详解
2021/04/25 Python
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL