Widget控件开发手册

来自ling
跳转至: 导航搜索

总述

Widget控件开发手册


每个Widget控件的开发可分为Client端和Server端两个部分,两部分的代码协同工作才能得到最终的完整控件。

开发建议

非下拉框:dialog+iframe

iframe 返回数据到parent的dialog,dialog的onhide事件做主页面的数据刷新逻辑.

下拉框

customerdropdown+floatcontainer+iframe

客户端

Widget控件的主体功能是运行于客户端,因此实现一个Widget控件的主要工作量也集中在客户端,一般而言也应该从客户端开始构建一个控件。

c01. JavaScript代码规范及注意事项 (RD)

代码规范

  1. 建议使用Aptana编辑来编辑。所有提交的代码应确保已使用Aptana进行自动格式化。
  2. 命名规范可参照Java。
    1. package使用全小写。
    2. Class使用大写开头的混合命名。
    3. public或protected类属性或类方法使用小写开头的混合命名。
    4. 私有类属性或类方法在小写开头的混合命名前增加下划线。
    5. 常量使用全大写的下划线分隔命名。
    6. 局部变量和内部方法使用小写开头的混合命名。
  3. 严格控制全局变量和全局函数的定义,如果确实需要使用,应首先考虑下面的两种替代方法:

以ProtoType的静态属性或静态方法替代,参考/data/data-provider.js中的Dorado.DataProvider.create()方法。 以(function(){... ...})();语句限定变量的作用范围,参考/data/data-provider.js中的dataProviders变量。

  1. 确保自己清晰的了解===与==、!==与!=之间的区别。
  2. 对于代码中的String,应使用双引号来声明;对于单个字符的String推荐使用单引号来声明。
  3. Dorado7引入了jQuery来提供对DOM操作的基础支持。不过避免与将来可能引入的prototype等其他js库冲突。使用jQuery时不要使用$(),而应以jQuery()替代。

一些小技巧和注意事项

||用于选值、空值保护

/**
 * 当arg的值为undefined或null时,确保最后o的值是一个有效的对象。
 * 此处假设了arg的值不可能为false、0等情况。
 */
var o = arg || {};

!!用于逻辑性转换

/**
 * 无论b原先的类型是什么,经过此操作之后一定将被转换为一个逻辑性的数值。
 */
var b = !!b;

数组迭代 在对性能并不十分敏感的地方,可以利用jQuery.each简化对数组的迭代。

var output = '';
jQuery.each(["a", "b", "c"], function(i, s){
    output += i + ':' + s + ' ';
});
// output = "0:a 1:b 2:c "

类型判断 对于通过new 操作符创建的对象,可以较简单的利用instanceof操作符来判断对象类型。例如所有的自定义的prototype、Object、Date。

(new Date()) instanceof Date    // true
component instanceof Dorado.widget.Control

原生类型的数值不适用instanceof 操作符,应是用typeof操作符。对于String而言还可以利用constructor属性。

typeof 4 === "number"     // true
"abc".constructor === String  // true

IE中的JSON语法的规范性 注意下面代码段中那个红色的逗号。这样的写法在Firefox、Safari、Opera、Chrome中都是正确的,但在IE(IE7或更加早期的版本)中却会被认为是语法错误。更麻烦的是,如果你不慎在IE中编写了这样的代码,这会引起整段JavaScript的编译错误,IE不会准确的告诉你的问题出在哪里。所以,今后当你发现有一段代码在其他浏览器中运行正常,唯独IE下报错。那么,你应该尝试查找有无此类代码问题出现。

var o = {
    property1: "value1", 
    property2: "value2", 
};

c02. Jsdoc规范及特殊要求 (RD)

c03. 虚拟面向对象 (RD)

c04. Widget类结构及基本对象的介绍 (RD)

c05. 控件的宽高和布局 (RD)

c06. 数据敏感控件 (RD)

c07. CSS与皮肤 (RD)

c08. 控件的焦点管理 (RD)

c09. 键盘消息处理 (RD)

c10. 拖拽支持 (RD)

c11. 系统消息的国际化 (RD)

c12. 异常管理 (RD)

c13. Action及相关的控件绑定机制 (RD)

c14. 常用的工具类和方法 (RD)

c15. 库文件的打包和管理 (RD)

服务端

相对于Widget控件的客户端而言,Widget控件的服务端代码一般只是起到辅助作用。主要用于方便将来的Dorado开发人员在服务端声明和定义控件。因此,Widget控件的服务端代码往往并不包含什么真正的逻辑代码,而只是一些属性、方法、事件的接口声明。

s01. 控件服务端代码的实现 (RD)

s02. 控件的注册信息 (RD)

s03. 自定义控件的XML解析器 (RD)

s04. 自定义控件的输出器 (RD)