通过继承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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
Nov 11 Javascript
jQuery CSS()方法改变现有的CSS样式
Aug 20 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
js实现按座位号抽奖
Apr 05 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
js实现随机点名
Jan 19 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php 学习资料零碎东西
2010/12/04 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
中学老师的自我评价
2013/11/07 职场文书
大学生个人事迹材料
2014/01/21 职场文书
模范家庭事迹材料
2014/02/10 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
合作投资意向书
2014/04/01 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
服务员岗位职责
2015/02/03 职场文书
区域销售大会开幕词
2016/03/04 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js