日期:2014-05-16 浏览次数:20431 次
版权所有,转载请注明来源http://gogo1217.iteye.com,违者必究!
?
???? 之前在整理公司框架的时候,曾经为javascript写过一些注释,但没有合适的工具来生成doc文件。后来功过google以及自己试用,发现jsdoc-toolkit和ext-doc2个工具比较有意思。
jsdoc-toolkit详见:js doc 工具推荐及使用(一):jsdoc-toolkit
?
ext-doc
?
官方地址为:http://code.google.com/p/ext-doc/
1.下载解压后,目录如下图所示:

其中sample是自带的示例,ext.xml是配置文件,ext-doc.bat是java命令调用;template是doc模板.
?
2.在sample下新建extdoc-demo.js,代码如下:
/**
* 基础组件,其他组件应该继承本class
* @class BaseComponent
*/
BaseComponent = extend(Observable, {
/**
* 构造方法
* @param {JSONObject} cfg
*/
constructor : function(cfg) {
this.setConfig(cfg);
//设置属性
if(!this.getParameterScope()) {
this.addParameterScope('default');
}
if(!this.getParameterScope('post')) {
this.addParameterScope('default', 'post');
}
this.initComponent(cfg);
//调用初始化组件
},
/**
* 初始化组件
*/
initComponent : function() {
this.render();
},
/**
* 是否已经渲染
*/
isRendered : false,
clazz : 'BaseComponent',
/**
* 如果指定了renderTo属性,则自动渲染,否则需要显示指定渲染目标
* @param {String} renderTo 渲染容器id
*/
render : function(renderTo) {
if(!this.isRendered) {
this.renderTo = renderTo || this.renderTo;
if(this.renderTo) {
//执行渲染之前的函数
if(this.fireEvent('beforerender', this.renderTo)) {
if(this.fireEvent('onrender', this.renderTo)) {
this.isRendered = true;
this.fireEvent('afterrender', this.renderTo);
}
}
}
}
},
/**
* 重新加载
* @param {Object} params 参数
* @param {String || Array} eventScope 事件作用域,用于组件之间传递事件
* @param {Object} trigerHander 事件发起的组件对象
*/
load : function(params, eventScope, trigerHander) {
},
/**
* 预览,如果当前不是编辑模式,则不会触发任何操作
*
*/
preview : function() {
if(this.isEditMode()) {
if(this.fireEvent('beforepreview')) {
if(this.fireEvent('onpreview'))
this.fireEvent('afterpreview');
}
}
},
/**
* 编辑,如果当前不是编辑模式,则不会触发任何操作
*/
edit : function() {
if(this.isEditMode()) {
if(this.fireEvent('beforeedit')) {
if(this.fireEvent('onedit'))
this.fireEvent('afteredit');
}
}
},
/**
* 拖拽放下事件
*/
drop : function(event, data) {
if(this.fireEvent('beforedrop', event, data)) {
if(this.fireEvent('ondrop', event, data))
this.fireEvent('afterdrop', event, data);
}
},
/**
* 移除组件
*/
remove : function() {
if(this.isEditMode()) {
if(this.fireEvent('beforeremove', this)) {
if(this.fireEvent('onremove', this))
this.fireEvent('afterremove', this);
}
}
},
onload : function(params) {
if(this.renderTo && this.mvId) {
var thiz = this, params = params || {};
jQuery('#' + this.renderTo).load(this.extURL + '?returnJsp=false&mvid=' + this.mvId, params, function() {
thiz.fireEvent('afterload', params);
});
}
},
onrender : function() {this.isEditMode() ? this.edit() : this.load();
},
/**
* 对象销毁,本方法需要组件将当前对象的缓存属性,额外的dom对象,绑定的时间删除。
*/
destroy : function() {
delete this._eventCalls;
},
equals : function(obj) {
return obj && this.renderTo == obj.renderTo;
}
});
?
3.修改sample下的ext.xml,增加自定义的js目录。如下
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<!--
Source section (required)
Use <source> to specify directory with JavaScript source files to be
processed or just one JS file. Directories are processed recursively.
Attributes:
src: (required) - source directory name or file name
match: (optional) - wildcard for the files. Default: "*.js"
skipHidden: (optional) - True to skip processing files and