通过继承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 相关文章推荐
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 Javascript
JavaScript 和 Java 的区别浅析
Jul 31 Javascript
浅谈JavaScript中的String对象常用方法
Feb 25 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
Apr 21 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 05 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
Layui tree 下拉菜单树的实例代码
Sep 21 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
小程序自定义轮播图圆点组件
Jun 25 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/11/06 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php服务器的系统详解
2019/10/12 PHP
使javascript也能包含文件
2006/10/26 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python递归计算N!的方法
2015/05/05 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Django框架 querySet功能解析
2019/09/04 Python
学习Django知识点分享
2019/09/11 Python
python实现图片横向和纵向拼接
2020/03/05 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
自主招生自荐信
2013/12/08 职场文书
服装厂厂长职责
2013/12/16 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技