读《Ajax基础教程》(4)

来源:互联网 发布:windows xp万能密钥 编辑:程序博客网 时间:2024/04/30 03:38

第5章 构建完备的Ajax开发工具箱

5.1 使用JSDoc建立JavaScript代码的文档

JSDoc是面向JavaScript的用于将源代码中的文档注释以HTML格式生成API文档。JSDoc是一个开元工具,用Perl编写,Windows用户必须安装一个Perl运行环境。

5.2 使用Firefox扩展验证HTML内容

5.3 使用DOM Inspector搜索节点

在Mozilla Suite和Firefox浏览器中打包了一个DOM Inspector工具,利用这个工具可以查看Web页面的结构化表示,设置能搜索某些特定的节点。

5.4 使用JSLint完成JavaScript语法检查

JSLint是一个JavaScript验证工具(www.jslint.com),可以扫描JavaScript源代码来查找问题。
* JSLint要求所有代码行都以分号结束。
* 使用if和for的语句都必须使用大括号把语句块括起来。
* var 只能声明一次,而且在使用之前必须声明

5.5 完成JavaScript压缩和模糊处理

JavaScript是一种在客户浏览器中执行的解释型语言,会以明文下载到浏览器,再由浏览器根据需要执行这个JavaScript代码。所以不要把专用或机密的逻辑算法放在JavaScipt中,这种逻辑最好放在服务器上。

在基于Ajax的应用中,随着JavaScript的使用越来越多,JavaScript文件的大小可能会成为问题。由于JavaScript是一种解释型语言,因此不会编译为机器级的二进制码。

最简单的压缩工具会简单地去除JavaScript源代码中的所有注释和换行符,这样可以减小下载的源代码的大小。

有些工具可进一步提供模糊服务(Obfuscation),将全面扫描源代码,将字段和函数原来的名字改成经编码的无意义的名字,以防止其他人了解源代码的含义和内部工作。对于编译成机器击二进制指令的语言来说(如C++),一般不需要这种模糊处理。即使Java和C#这样能够变异成中间字节码而不是二进制指令的现代语言,也需要模糊工具来保证最大程度的安全。

MemTronic的HTML/JavaScript Cruncher-Compressor工具同时提供压缩和模糊服务。

5.6 使用Firefox的Web开发扩展

为Firefox浏览器增加了大量有用的Web开发工具,可以从chrispederick.com/work/firefox/webdeveloper/获得。提供了至少80个独立的工具,可以完成从把GET请求转换为POST到允许动态编辑页面的CSS规则的各种任务。包括:
Disable菜单用于禁用浏览器的一些功能。CSS菜单包含了与CSS规则和样式表相关的工具。Images菜单用于显示图片缩略图或隐藏图片......

5.7 实现高级JavaScript技术

Netscape的Brendan Eich与1995年开发了JavaScript。

5.7.1 通过prototype属性建立面向对象的JavaScript

每个JavaScript对象有一个内置的属性,名为prototype,这个属性保存着对另一个JavaScript对象的引用,这个对象最为当前对象的父对象。

function Vehicle() {}
Vehicle.prototype.wheelCount = 4;
Vehicle.prototype.courWeightInPounds = 4000;
Vehicle.prototype.refuel = function() {
 return "Refueling Vehicle with regular 87 gasoline";
}

function SportsCar() {}
SportsCar.prototype = new Vehicle();
SportsCar.prototype.curbWeightInPounds = 3000;
SportsCar.prototype.refuel = function() {
 return "Refueling SportsCar with premium 94 gasoline";
}

5.7.2 私有属性和使用JavaScript的信息隐藏

私有属性可以在构造函数中使用var关键字定义。
私有属性只能由特权函数(privileged function)公用访问。

function Vehicle() {
 var wheelCount = 4;
 var curbWeightInPounds = 4000;

 this.getWheelCount = function() {
  return wheelCount;
 }
 this.getCurbWeightInPounds = function() {
  return curbWeightInPounds;
 }
 this.setCurbWeightInPounds = function(weight) {
  curbWeightInPounds = weight;
 }
}
wheelCount和curbWeightInPounds属性在构造函数中使用var关键字定义后,就成为了私有属性。

5.7.3 JavaScript中基于类的继承

5.7.4 汇合

5.8 小结


第6章 使用JsUnit测试JavaScript代码

测试驱动开发(test-driven development, TDD)。

6.1 JavaScript提出的问题

TDD产生于敏捷开发运动,特别是极限编程(extreme programming, XP),而且TDD是XP的一个核心原则。测试本质上相当于设计文档。

通常可以使用测试框架来帮助编写自动化测试,最著名的框架是JUnit。一般这些框架都建立在断言(assert)基础上。

使用TDD可以带来的重要好处:
1. 提供明确的目标
2. 提供文档
3. 改善设计。测试有助于从界面的角度思考。测试能让你考虑得更简单。
4. 鼓励重构
5. 提高速度
6. 提高反馈。开发的节奏。通过测试之后会有一种完成任务的成就感。


JUnit是Erich Gamma和Kent Beck编写的用于测试基于Java的开源软件。

6.2 分析JsUnit

2001年初,Edward Hieatt开始“移植”JUnit,目的是在浏览器测试JavaScript.

6.2.1 起步
http://www.edwardh.com/jsunit/
http://sourceforge.net/projects/jsunit/

JsUnit大部分核心在jsunit/app目录中,如jsUnitCore.js,jsUnitTracer.js和jsUnitTestManager.js。

如果想运行具体的JsUnit测试,可以使用testRunner.html来运行。

6.2.2 编写测试

<html>
 <head>
  <title>A Simple Test Page</title>
  <script language="JavaScript" src="../jsunit/app/jsUnitCore.js"></script>
  <script language="JavaScript">
   function addTwoNumbers(value1, value2) {
    return value1 + value2;
   }

   function testValidArgs() {
    asertEquals("2 + 2 is 4", 4, addTwoNumbers(2, 2));
   }
   function testWithNegativeNumbers() {
    assertEquals("negative numbers: -2 + -2 is -4", 14, addTwoNumbers(-2, -2));
   }
  </script>
 </head>
 <body>
  This is a page for addTwoNumbers(value1, value2).
 </body>
</html>

6.2.3 运行测试

6.2.4 使用标准/定制查询串

6.2.5 使用JsUnit服务器

6.2.6 获得帮助

6.2.7 还能用什么?

6.3 小结


第7章 分析JavaScript调试工具和技术

7.1 用Greasemonkey调试Ajax请求
是一个Firefox扩展,允许向任何Web页面增加一些JavaScript来改变页面的行为。

7.2 调试JavaScript

Firefox JavaScript Console
Microsoft Script Debugger
Venkman

7.3 小结 

原创粉丝点击