javascript进阶——测试和打包分发
建立一个面向对象的好的代码基础后,为了达到代码重用的目的,通过调试使用适当的测试用例进行测试尤为必要,之后就是打包分发的主题。
一、调试与测试
1、调试
- Firebug:包含了错误控制台、调试器、DOM查看器。可以很好的定位DOM结构。
- Chrome:拥有控制台、DOM查看器等于Firebug几乎类似功能。
- IE浏览器:错误控制台显示错误,F12打开开发者工具,提供了javascript调试工具。
- Venkman:Mozilla发起的javascript调试器项目,它与javascript引擎本身紧密集成,是你能够对代码的执行做出精确的控制。
2、测试
- JSUnit
- J3Unit
- Test.Simple:比较新,是JSAN的javascript模块的标准测试方案。
二、打包分发
1、命名空间化
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提出程序中所有的变量都必须在使用前声明,虽然javascript允许不申明直接使用,但是会导致变量实际作用域不好理解。由于null、0、false、‘’、undefined都是两两相等(==),因此JSLint要求每次对false进行比较时都要是要 “!==”、“===”。
- 代码块与大括号:不应该使用单行的代码块。也就是if、while或者for等语句中,即使后面只有一条语句,也要带上花括号“{”、“}”。
- 分号:所有的语句都应该在后面加上分号,独占一行的代码结尾可以省略,但是压缩后就可能导致问题。
3、压缩
- 只去除多余空白和注释,保留所有有意义的代码。JSMin属于这种,原理最简单,去除多余空白字符和注释。
- 去除空白和注释,而且修改变量名以减小代码
- 完成上述两种工作,同时还最小化代码中的所有单词,不仅仅是变量名称。Packer是这类工具,是目前最强大的javascript压缩工具,提供了一种彻底精简代码,并在执行时即时重新展开的方式,能够得到可能是最小的代码。可以看做一个可自解压的ZIP文件,压缩后会多出几百字节的内容用于自解压。小文件的压缩效果可能没有JSMin的效果好,但是大文件则是Packer最合适。
4、分发
javascript进阶——测试和打包分发的更多相关文章
- iOS APP打包分发给远程的手机测试
APP要打包给远程的朋友或客户测试,但又不是企业账号的情况下,我们只能根据手机的udid进行描述证书的配置,再打包分发给提供了udid的手机进行安装 一.如何得到udid? 手机连接到mac电脑,打开 ...
- JavaScript 进阶(一)JS的"多线程"
这个系列的文章名为“JavaScript 进阶”,内容涉及JS中容易忽略但是很有用的,偏JS底层的,以及复杂项目中的JS的实践.主要来源于我几年的开发过程中遇到的问题.小弟第一次写博客,写的不好的地方 ...
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务 ...
- Python 库打包分发、setup.py 编写、混合 C 扩展打包的简易指南(转载)
转载自:http://blog.konghy.cn/2018/04/29/setup-dot-py/ Python 有非常丰富的第三方库可以使用,很多开发者会向 pypi 上提交自己的 Python ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- JavaScript进阶内容——DOM详解
JavaScript进阶内容--DOM详解 当我们已经熟练掌握JavaScript的语法之后,我们就该进入更深层次的学习了 首先我们思考一下:JavaScript是用来做什么的? JavaScript ...
- #笔记#JavaScript进阶篇一
#JavaScript进阶篇 http://www.imooc.com/learn/10 #认识DOM #window对象 浏览器窗口可视区域监测—— 在不同浏览器(PC)都实用的 JavaScrip ...
- 4、JavaScript进阶篇①——基础语法
一.认识JS 你知道吗,Web前端开发师需要掌握什么技术?也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HTML+CSS创建一个漂亮的页面,但这还不够,它只是静态页面 ...
- 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...
随机推荐
- Hibernate继承映射
在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子 ...
- SAP生产订单状态
SAP系统的常见订单状态如下: · CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: · PREL (部分下达):当生产订单部分下达时,如仅下 ...
- 系统调用服务号 linux 2.6.32
http://www.cnblogs.com/xcywt/p/4998963.html 系统定义符号集中声明在 /usr/src/kernels/linux-2.6.32/include/linux/ ...
- Java实现折半(二分)插入排序
/*折半插入查找思想:每趟将一个带排序的元素作为关键字插入到已经排好的部分序列的适当位置上,查找适当位置的方法用折半查找法 * 适合记录数较多的场景 * 在查找插入位置时节省了时间 * 在记录移动次数 ...
- android中实现简单的播放
MediaPlayer mediaPlayer1; mediaPlayer1 = MediaPlayer.create(getBaseContext(), R.raw.ic_yanyuan); med ...
- VBA控件ListBox的BoundColumn和TextColumn用法,Value和Text的用法
在使用Excel编写VBA程序时,用到ListBox,然后研究了下它的所有属性.其实这个控件功能很不好用,太老了,最重要的是还不支持鼠标滚轮,很不好操作,但是考虑到兼容性,还是使用它. 其实读取.写入 ...
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...
- NChome导出补丁包需要注意的东西
- MySQL(5.6) 函数
字符串函数 ASCII(str) 说明:返回字符串 str 最左边字符的 ASCII 值 mysql'); mysql); mysql> SELECT ASCII('a'); mysql> ...
- OC - 4.OC核心语法
一.点语法 1> 基本使用 点语法本质上是set方法/get方法的调用 2> 使用注意 若出现在赋值操作符的右边,在执行时会转换成get方法 若出现在赋值操作符的左边,在执行时会转换成se ...