现在位置首页 / 生活多美好 /正文

Jquery插件DataTable的使用问题总结

作者: IT小兵 | 2013年6月27日| 热度:℃ | 评论: |参与:

最近在项目中遇见几个bug和问题。做一下总结。

在项目中出现bug很正常,修改bug的方式和方法却是多种多样的。

1.发现:

较多的bug发现是通过Ui界面发现的,也就决定了UI开发人员的多重角色:修复bug,负责与bug相关的人员协调解决问题,

如果设计存在问题,还需要与产品设计师交流。当然要是到了与产品设计讨论问题的时候,这个代价是很高的。

我们会发现ui开发人员的bug是很多的,而且几乎都是严重的。在测试人员无法分清是数据问题/界面问题,还是传输问题的时候,

bug就会在ui开发者身上堆积。

2.类别:

在bug中最多是JavaScript脚本错误,样式错误,功能错误等;对于cs代码引起的错误,几乎在开发时就修改了。

而脚本的错误,样式的问题,是需要考虑浏览器,运行环境,部署是否完整等多个条件,导致修复的难度和再现的难度都比cs代码

要困难的多。

3.问题:

在开发中,很多开发人员都会局限于自身的功能范围,考虑不到边界和交互功能的影响。这导致了功能的重复开发,交互接口的

频繁调整,以及修改后对其他模块的致命的影响;

这与设计的粒度有很大关系。所谓敏捷开发后,设计不至细节,开发人员有自由发挥的余地,而又缺少一个总控的角色,导致这样的

问题也是情有可原。

重构是每天都在进行的,但是代码审查等验证性的步骤缺少,导致美的代码在重构,丑的代码也还是继续存在。

4.具体问题:

1).Javascript脚本:

在系统中,js是不可缺少的。而js的开源库更是少不了。本系统使用了

    Jquery库/相关的UI库/插件库:这几个本身是没有问题的,兼容性也不错。

   My97Datepicker:时间控件。在其中遇到的一个 “脚本权限”问题中,就是因为这个插件与Jquery冲突造成的。

    其他脚本。

多种脚本的冲突导致了很多问题。这是在设计之初,没有考虑到功能的多样性,而在开发中随行而发,兴致所至则代码成。

例子:

<script>new My97DP();</script>

这个代码本身没有问题。但是在系统框架中,由于加载较慢,导致这个代码是不是的报错。

加上一个延迟加载:

setTimeout("new My97DP(); ",3000);//延时3秒  

经测试只要框架页面加载不超过3秒,就不会报错。要是框架加载需要3秒,客户不急眼了:我没事上来就看你加载玩啊??

2).还是脚本问题:万恶的Iframe加载:

在系统中,模拟多标签的浏览器做了一个可打开关闭的Tab多页面切换区。采用了一个控件。

apTabs是一个采用Prototype框架开发的HTML/JavaScript Tab控件。支持Tab横向滚动隐藏,以便在一个比较狭窄的空间中显示更多的Tab标签页。支持通过Ajax,iFrame加载内容。支持IE6-7、IE8 beta2、Opera9、Chrome0.3、Safari3.1 Win和Firefox2-3等浏览器。

这个东东是不错。但是又是一个Js框架开发的--用了Prototype。又要考虑与Jquery的兼容性。我们就会想啊:为啥当初不选择一个与Jqeury兼容的tab控件啊?谁知道那?大家都会去想:“历史上”我们使用了啥,我们熟练使用了那个东东。其实我们有历史吗?技术是不会有历史的,既然都是拿来主义,为何不拿个好的对自己有利的那?所谓取其精华弃其糟粕嘛。

ApTabs在系统中,没打开一个tab会在客户端机器上产生5-8M的内存占用,而且关闭后就不会释放。nnd,打开20个界面后,再关闭再打开客户机器有1G内存就这么无声无息的没了。

原因:这个问题也是属于经典问题。采用Div等方式把Iframe给显示出来,然后再关闭div的隐藏属性,这样是无法释放Iframe的占用资源的。

需要在关闭div之前,把iframe的资源GC了才可以。

方法:在关闭tab时,循环该Tab的所有Element,包括iframe,设置:thisObject.removeNode(true);

设置清理后,如果是IE浏览器可以使用:CollectGarbage();进行GC。其他浏览器不兼容。CollectGarbage()可多设置几次,或者

用Setinvert执行。(js)

代码:    ifm.parentNode.removeChild(ifm);    

3).样式:这也许也是传统了,使用的js插件多了,用的css也就多了,除了系统自身的main.css外,还有各种各样的css。

这就导致了这个问题:原来工作正常的DataTable显示数据出现了乱码,显示都是"。。。。"。一串小蝌蚪似的。我是又跟踪又请教--无效。最后发现数据和编码没有问题。考虑到最近修改过样式,把Ie放大10倍,看到原来是有数据,只是字体太小,样式没有设置;

这就是换了一套新皮肤造成的。你说这是代码错误吗?但是确实是bug。

出现了Bug,不一定就是代码的问题,非要去在Cs代码,js代码中找出一个所以然。还是要考虑全面一些,比如:一直工作正常的东东为啥不行了?最近修改什么地方了?会有影响吗?如果你和别的模块是通用的功能控件,它的是否正常工作?这个显示不正常,是只有时间格式不正确还是其他格式都不正确?如果整个页面不正常,是不是考虑一下编码问题?考虑传输时Json的编码问题?还是Ajax的问题?

很多时候,正常工作的代码不正常了,不是代码问题;更多的是部署问题,配置问题。


5.总结:

1).在系统框架设计之初,定下来的技术方案,采用的代码层次架构,使用的具体开发控件,以及组织形式等等,这些较大原则是不允许修改。具体的实现,是采用什么手段,就看是否利于项目进度,是否熟练使用,是否对技术的提高有改进了。

就跟战争似的:大方向定下来了,是不可动摇的;具体你怎么打,是左翼还是右翼,我不管,胜利就行了。

2).历史问题:

我们都会留恋历史,尤其是历史上你还成功过的那段时光。但是在技术上就无可留恋了。技术日新月异,各种补丁啊,版本啊,思路啊等都在更新。如果真好还是可以的,但是在当时好,又非要加在现在的新版本中来,兼容性不好,不符合大的方向更不好。

历史有啥用,不提高不进步才是可怖的。中国都五千年历史了那,还不是被人打的屁颠屁颠的。

以史为鉴 或  坐吃山空;

3).bug的范围:

bug就是bug,你想改或不想改,它都在那里;bug是问题,不是说技术有问题,是说你实现这个功能的方法和结果有问题。



点击阅读本文所属分类的更多文章: 生活多美好 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

抢天猫双11红包
推荐使用阿里云服务器
echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询