通过继承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 相关文章推荐
浏览器脚本兼容 文本框中,回车键触发事件的兼容
Jun 21 Javascript
jQuery编写widget的一些技巧分享
Oct 28 Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
Vue计算属性的使用
Aug 04 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
JS中作用域以及变量范围分析
Jul 18 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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
咖啡的种类和口感
2021/03/03 新手入门
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python运行其他程序的实现方法
2017/07/14 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python实现微信小程序支付功能
2019/07/25 Python
Python实现动态循环输出文字功能
2020/05/07 Python
十八届三中全会个人学习材料
2014/02/13 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
计算机毕业生求职信
2014/06/10 职场文书