Javascript工具 - 使用JSDoc建立JavaScript代码的文档

简介: 作为一名有经验的Web应用开发人员,你也许可以熟练地应用某种服务器端技术(或者,应用多种服务器端技术)来构建Web应用。我们已经看到,在过去几年中,服务器端技术有了长足的发展,服务器端软件开发越来越容易,也越来越健壮,相比之下,客户端技术基本上被抛在了一边。

作为一名有经验的Web应用开发人员,你也许可以熟练地应用某种服务器端 技术 (或者,应用多种服务器端技术)来构建Web应用。我们已经看到,在过去几年中,服务器端技术有了长足的发展,服务器端软件开发越来越容易,也越来越健壮,相比之下,客户端技术基本上被抛在了一边。Ajax技术的横空出世使这种状况有所改观,因为开发人员现在有了一个更丰富的客户端工具箱,有大量工具可以使用。你可能不习惯使用大量的HTML、JavaScript和CSS,但是如果要实现Ajax技术,你就必须这么做。本章将介绍的工具和技术会使得开发Ajax应用更为容易。本章不是深入全面的教程,只能作为这些有用工具和技术的快速入门。

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

 像其他的许多编程语言一样,在一般的软件开发人员看来,JavaScript也有一个基本的缺陷:编写(或者重新编写)一个 功能 通常相对容易,但是要阅读现有的代码并明确它是如何工作的,就不那么轻松了。编写代码时可以适当地增加注释,这样当其他开发人员要理解代码如何工作,特别是要修改代码的功能时,就能减轻他们的负担,节省他们的时间和精力。

 Java语言引入了一个工具,名为javadoc。这个工具可以根据源代码中的文档注释以HTML格式生成API文档。所生成的HTML文档在任何Web浏览器上都能阅读,而且由于它是以HTML格式生成的,所以可以在线发布,这样开发人员就能很容易地访问这些文档。以一种可以轻松浏览的格式来提供API文档,这种 方法 使得开发人员不必仔细地查看源代码才能了解某个类或方法会有怎样的行为,以及该如何使用。

  JSDoc是面向JavaScript的一个类似的工具(jsdoc.sourceforge.net)。JSDoc是一个开源工具,是采用GPL(GNU Public License)协议发布的。JSDoc用Perl编写,这意味着Windows用户必须安装一个Perl运行时环境。(而对于大多数Linux和Unix操作系统,Perl是其中的一个标准部分)。

  5.1.1 安装

 要使用JSDoc,Windows用户必须安装一个Perl环境,如ActivePerl(www.activeperl. com)。还必须安装一个非标准的Perl模块,名为HTML::Template(www.cpan.org)。JSDoc 项目 网页提供了有关说明,如果需要帮助可以参考。

  JSDoc发布为一个压缩的tarball。要安装JSDoc,你只需从JSDoc项目网页下载tarball,把它解开到指定的目录,进入JSDoc目录,输入以下命令,就能测试JSDoc了:

  perl jsdoc.pl test.js

  JSDoc将所得到的HTML文件保存到名为js_docs_out的目录。打开这个文件夹中的index.html文件,就可以浏览根据test.js文件生成的文档。

  5.1.2 用法

  既然对JSDoc已经有所了解,你可能想知道如何使用JSDoc来为你的JavaScript代码生成文档。表5-1列出了可以创建HTML文档的一些特殊JSDoc标记。这些标记对于曾在Java代码中编写过javadoc注释的人员并不陌生。包含在生成文档中的每个注释块都必须以/**开头,并以*/结束。

  表5-1 JSDoc命令属性

命 令 名 描  述
@param

  @argument

指定参数名和说明来描述一个函数参数
@return

  @returns

描述函数的返回值
@author 指示代码的作者
@deprecated 指示一个函数已经废弃,而且在将来的代码版本中将彻底删除。要避免使用这段代码
@see 创建一个HTML链接,指向指定类的描述
@version 指定发布版本
@requires 创建一个HTML链接,指向这个类所需的指定类
@throws

  @exception

描述函数可能抛出的异常的类型
{@link} 创建一个HTML链接,指向指定的类。这与@see很类似,但{@link}能嵌在注释文本中
@fileoverview 这是一个特殊的标记。如果在文件的第一个文档块中使用这个标记,则指定该文档块的余下部分将用来提供这个文件的概述
@class 提供类的有关信息,用在构造函数的文档中
@constructor 明确一个函数是某个类的构造函数
@type 指定函数的返回类型
@extends 指示一个类派生了另一个类。JSDoc通常自己就可以检测出这种信息,不过,在某些情况下则必须使用这个标记

  续表

命 令 名 描  述
@private 指示一个类或函数是私有的。私有类和函数不会出现在HTML文档中,除非运行JSDoc时提供了--private命令行选项
@final 指示一个值是常量值。要记住JavaScript无法真正保证一个值是常量
@ignore JSDoc忽略有这个标记的函数

  JSDoc发布包中包括一个名为test.js的文件,这是一个很好的参考例子,可以从中了解如何使用JSDoc。你应该记得,第一次测试JSDoc安装是否成功时就是根据这个文件来创建文档文件的。如果对如何使用JSDoc标记还有疑问,可以参考这个文件。

  代码清单5-1是一个小示例,展示了JSDoc的用法。jsDocExample.js定义了两个类:Person和Employee。Person类有一个属性name,还有一个方法getName。Employee类继承自Person类,并增加了title和salary属性,另外还增加了一个方法getDescription。

  代码清单5-1 jsDocExample.js

  /**
* @fileoverview This file is an example of how JSDoc can be used to document
* JavaScript.
*
* @author Ryan Asleson
* @version 1.0
*/
/**
* Construct a new Person class.
* @class This class represents an instance of a Person.
* @constructor
* @param {String} name The name of the Person.
* @return A new instance of a Person.
*/
function Person(name) {
/**
* The Person's name
* @type String
*/
this.name = name;
/**
* Return the Person's name. This function is assigned in the class
* constructor rather than using the prototype keyword.
* @returns The Person's name
* @type String
*/
this.getName = function() {
return name;
}
}
/**
* Construct a new Employee class.
* @extends Person
* @class This class represents an instance of an Employee.
* @constructor
* @return A new instance of a Person.
*/
function Employee(name, title, salary) {
this.name = name;
/**
* The Employee's title
* @type String
*/
this.title = title;
/**
* The Employee's salary
* @type int
*/
this.salary = salary;
}
/* Employee extends Person */
Employee.prototype = new Person();
/**
* An example of function assignment using the prototype keyword.
* This method returns a String representation of the Employee's data.
* @returns The Employee's name, title, and salary
* @type String
*/
Employee.prototype.getDescription = function() {
return this.name + " - "
+ this.title + " - "
+ "$" + this.salary;
}

  虽然不像JSDoc发布包中的test.js文件那么完备,这个示例同样很好地展示了JSDoc最常见的用法(见图5-1)。@fileoverview 标记提供了jsDocExample.js的概述。@class标记描述了两个类,@constructor标记将适当的函数标记为对象的构造函数。@param标记描述了函数的输入参数,@returns和@type标记描述了函数的返回值和返回类型。这些标记是你最有可能用到的,而且对于浏览文档的其他开发人员,这些标记也最有用。

Ajax基础教程(5)- 5.1 使用JSDoc建立JavaScript代码的文档

  图5-1 JSDoc根据jsDocExample.js文件生成的文档

目录
相关文章
|
3月前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
138 58
|
3月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
284 2
|
1月前
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
80 15
在 golang 中执行 javascript 代码的方案详解
|
2月前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
49 3
|
2月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
52 3
|
2月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
357 9
|
2月前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
102 10
|
2月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
560 4
|
2月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
134 6