设为首页 收藏本站
查看: 652|回复: 0

[经验分享] javascript进阶——测试和打包分发

[复制链接]

尚未签到

发表于 2017-3-1 07:57:31 | 显示全部楼层 |阅读模式
  建立一个面向对象的好的代码基础后,为了达到代码重用的目的,通过调试使用适当的测试用例进行测试尤为必要,之后就是打包分发的主题。

一、调试与测试

1、调试


  • Firebug:包含了错误控制台、调试器、DOM查看器。可以很好的定位DOM结构。
  • Chrome:拥有控制台、DOM查看器等于Firebug几乎类似功能。
  • IE浏览器:错误控制台显示错误,F12打开开发者工具,提供了javascript调试工具。
  • Venkman:Mozilla发起的javascript调试器项目,它与javascript引擎本身紧密集成,是你能够对代码的执行做出精确的控制。

2、测试


为代码构建可靠的测试用例时,可以为自己省下无数调试的时间、寻找一个古怪bug的时间或者除去了引入新bug的机会。



  • JSUnit


长期是javascript单元测试的唯一标准,基于java时间中很受欢迎的JUnit程序包。包含三个基本的组件:

测试运行器:为测试过程的执行提供一个图形化输出,还提供了输入测试集并执行的能力。

测试集:一系列测试用例的集合。

测试用例:可以执行以获得真假表达式的单独命令。

  • J3Unit


与JSUnit相比提供了像JUnit和Jetty等对服务器端的测试套件,对java开发者很有用。

  • Test.Simple:比较新,是JSAN的javascript模块的标准测试方案。

二、打包分发


编写好优美的面向对象javascript代码之后,应该与其他javascript库良好配合使用,或者供他人重复使用。
1、命名空间化


为了和全局对象或其他使用的库不冲突,需要考虑命名空间,但是javascript不支持命名空间,因此需要使用对象的属性又可以包含对象的特性,模拟实现命名空间。如:


var YAHOO = {}; //创建一个默认全局命名空间
YAHOO.util = {}; //使用对象设置一些子命名空间
YAHOO.util.Event = {addEventListener: function(){...}}; //创建最终的命名空间,包含一个值为函数的属性
YAHOO.util.Event.addEventListener(); //调用具体命名空间中的函数
很多流行的框架都是利用这个特性构建了各自的命名空间系统。



  • Dojo:dojo.require("dojo.widget.AccordionContainer");导入特定命名空间下的程序包
  • JQuery:$或者是JQuery对象为最外层命名空间,给这个对象添加属性或者方法就是添加的插件。
  • YUI:与Dojo一样使用了深层次的命名空间结构来组织函数和特性,不同的是所有外部代码的导入由自己完成。

2、清理代码


如果希望其他人可以使用或者修改后保存下来,自己的代码需要进行检查和清理,JSLint工具就是使用其内建的一系列规则找出可能引发问题的代码片段。



  • 变量声明:JSLint提出程序中所有的变量都必须在使用前声明,虽然javascript允许不申明直接使用,但是会导致变量实际作用域不好理解。由于null、0、false、‘’、undefined都是两两相等(==),因此JSLint要求每次对false进行比较时都要是要 “!==”、“===”。
  • 代码块与大括号:不应该使用单行的代码块。也就是if、while或者for等语句中,即使后面只有一条语句,也要带上花括号“{”、“}”。
  • 分号:所有的语句都应该在后面加上分号,独占一行的代码结尾可以省略,但是压缩后就可能导致问题。

3、压缩


分发javascript库的关键之一就是使用代码压缩工具来节省带宽,压缩后代码不可读。有三类压缩工具:



  • 只去除多余空白和注释,保留所有有意义的代码。JSMin属于这种,原理最简单,去除多余空白字符和注释。
  • 去除空白和注释,而且修改变量名以减小代码
  • 完成上述两种工作,同时还最小化代码中的所有单词,不仅仅是变量名称。Packer是这类工具,是目前最强大的javascript压缩工具,提供了一种彻底精简代码,并在执行时即时重新展开的方式,能够得到可能是最小的代码。可以看做一个可自解压的ZIP文件,压缩后会多出几百字节的内容用于自解压。小文件的压缩效果可能没有JSMin的效果好,但是大文件则是Packer最合适。

4、分发


javascript编码的这个最后步骤是可选的,根据实际情况复制或上传到供他人使用的地方即可,如果开发了有趣的代码希望其他人都能使用,应该考虑的是JSAN,是类似perl的CPAN这样的功能。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348528-1-1.html 上篇帖子: Nutch环境搭建 下篇帖子: 使用Spring Boot来加速Java web项目的开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表