通过继承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中的私有成员
Sep 18 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
Sep 06 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
JS中sort函数排序用法实例分析
Jun 16 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 Javascript
谈谈JS中的!!
Dec 07 Javascript
在小程序中使用canvas的方法示例
Sep 17 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
微信小程序仿通讯录功能
Apr 09 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
PHP制作图型计数器的例子
2006/10/09 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
angularJs中datatable实现代码
2017/06/03 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python redis 删除key脚本的实例
2019/02/19 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
美国知名艺术画网站:Art.com
2017/02/09 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
网管求职信
2014/03/03 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
经营目标责任书
2015/05/08 职场文书
三八节祝酒词
2015/08/11 职场文书
创业计划书之酒吧
2019/12/02 职场文书
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL