一、命名规范
  在你编码过程中对类,名字空间以及文件名使用统一的命名规则对你代码的组织,结构化以及可读性有很大的好处。

1、类命名规范:
  类名最好只包含字母,在多数情况下,数字是不鼓励使用的,除非非要用不可,也不要使用下划线,-以及其它非字母字符,例如:
    MyCompany.useful_util.Debug_Toolbar 不鼓励这样命名
    MyCompany.util.Base64 可接受的命名
 
  类名最好包括组织,在适当的名字空间通过使用.来访问对象属性,至少,类名应该有一个顶层的包。例如:
    MyCompany.data.CoolProxy
    MyCompany.Application
  顶层的包名以及实际的类名应该使用CamelCased命名规范,其它应该为小写,如下:
    MyCompany.form.action.AutoLoad
 
  不要使用Ext作为顶层包名,首字母应该遵循CamelCased命名规范,如:
    Ext.data.JsonProxy instead of Ext.data.JSONProxy
    MyCompany.util.HtmlParser instead of MyCompary.parser.HTMLParser
    MyCompany.server.Http instead of MyCompany.server.HTTP
 

2、源文件命名规范:
  类名直接映射到存储该类的文件路径,因此,每个文件只能有一个类,如
    Ext.util.Observable is stored in path/to/src/Ext/util/Observable.js
    Ext.form.action.Submit is stored in path/to/src/Ext/form/action/Submit.js
    MyCompany.chart.axis.Numeric is stored in path/to/src/MyCompany/chart/axis/Numeric.js
  path/to/src目录包含应用的所有类,所有类应该放在这个公共根目录下,以合适的名字空间来获得最好的开发,管理以及部署体验。
 
  方法以及变量的命名规则与类命名相似,方法和变量的命名也只包含字母,数字不鼓励使用,除非必须用到,同样不使用下划线,-以及其它非字母字符。
  方法和变量命名应该遵循CamelCased命名规范,应适用首字母。例如
    可接受的方法名: 
      encodeUsingMd5()
      用getHtml() 替代 getHTML()
      用getJsonResponse()替代 getJSONResponse()
      用 parseXmlContent()替代parseXMLContent()
    可接受的变量名: 
      var isGoodName
      var base64Encoder
      var xmlReader
      var httpServer

3、属性命名:
  类属性命名和上面方法以及变量一样,除了当属性是静态常量的时候。
  当属性是静态常量时,字母应该大写。
    Ext.MessageBox.YES = "Yes"
    Ext.MessageBox.YES = "Yes"
    Ext.MessageBox.NO = "No"
    MyCompany.alien.Math.PI = "4.13"
 


二、define
  在ExtJS4之前,使用Ext.extend来创建类,在ExtJS4之后,使用Ext.define来创建类。
  基本语法:
  Ext.define(className, members, onClassCreated);
  其中,
    className:类名
    members:这是一个对象,它表示一个以键值对形式表示的类成员集合。
    onClassCreated:这是一个可定制的回调函数,当这个类所依赖的类都准备完毕时便会调用这个回调函数,并且类本身将会完全创建。由于有这个类创建新异步属性,这个回调在很多情况都会很有用。
 
例:
 Ext.define('MyComponent.getWH', {
showSize: function(){
var dom = Ext.get(Ext.getBody().dom);
Ext.Msg.alert('My Component WH','Dom Width: ' + dom.getWidth() + '<br />Dom Height: ' + dom.getHeight());
}
});
Ext.onReady(function(){
var myPanel = Ext.create('MyComponent.getWH',{
renderTo: Ext.getBody()
});
myPanel.showSize();
});

效果:

   



接下来的目标,就是在不同需求中,各种布局之下的组件功能的定制。

 

【ExtJS】关于自定义组件的更多相关文章

  1. 【ExtJS】自定义组件datetimefield(二)

    接上[ExtJS]自定义组件datetimefield(一) 第三步:添加按钮事件绑定,获取选定的时间 privates:{ finishRenderChildren: function () { v ...

  2. 【ExtJS】自定义组件datetimefield(一)

    目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefiel ...

  3. ExtJS 自定义组件

    主要参考的是官方文档 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. 【ExtJS】关于自定义组件(一)

    一.目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefi ...

  5. ExtJS4.2 - 从 Hello World 到 自定义组件 -01 (为爱女伊兰奋斗)

    ExtJS4.2 - 从 Hello World 到 自定义组件 - 01 经验.概述.项目搭建.国际化.HelloWorld.布局 —— 为爱女伊兰而奋斗 ——少走弯路,简单才是王道 1. 写在前面 ...

  6. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  7. Android自定义组件

    [参考的原文地址] http://blog.csdn.net/l1028386804/article/details/47101387效果图: 实现方式: 一:自定义一个含有EditText和Butt ...

  8. 自己写的几个android自定义组件

    http://www.see-source.com/androidwidget/list.html 多多指点,尤其是自定义组件的适配问题,希望能有更好的方法

  9. PhoneGap: Android 自定义组件

    Hello Core Demo Plugin Development(组件部署): http://docs.phonegap.com/en/2.0.0/guide_plugin-development ...

  10. android开发之自定义组件

    android开发之自定义组件 一:自定义组件: 我认为,自定义组件就是android给我们提供的的一个空白的可以编辑的图片,它帮助我们实现的我们想要的界面,也就是通过自定义组件我们可以把我们要登入的 ...

随机推荐

  1. [转] SAAS, PAAS, IAAS

    SaaS:软件即服务.如CRM.HRM.SCM等等,是可以直接使用的,所以是和多数用户接触最多的一个层面,典型的比如CRM类软件SalesForce. PaaS:平台即服务.如数据挖掘.系统管理.编程 ...

  2. 浅谈短视频APP的发展趋势

    2014年6月20日,在AppAnnie最新发布5月应用指数中,美拍荣登“非游戏类iOS榜单”全球下载量第一位置,成为全球iOS应用商店最热门APP.能在<AppAnnie应用指数>这份A ...

  3. visual studio installer 卸载时不能删除安装目录问题

      在vs中可以制作安装程序,但是这个安装程序默认卸载的时候不会把安装目录卸载,如果想在卸载的时候删除这个目录,那就要费点周折了.此方法同时适应于程序自删除以及工作目录删除. 基本思路是在程序要退出的 ...

  4. Linux服务器其中一个磁盘满了怎么办?在不做磁盘扩容的情况下,一个软连接就搞定。

    适用环境要求:Linux系统及服务器.有管理员权限.存在多余空间的磁盘例如下图中"/home"在磁盘sda5中与"/"不属于同一块磁盘: 1.首先转移正在使用的 ...

  5. const限定符、constexpr和常量表达式------c++ primer

    编译器将在编译过程中把用到const变量的地方都替换成对应的值,为了执行这种替换,编译器必须知道变量的初始值.如果程序包含多个文件,则那个用了const对象的文件都必须能访问到它的初始值才行.要做到这 ...

  6. c++实现多叉树树形显示(适合家谱的显示)

    多叉树(左兄弟右孩子二叉树)的树形显示 核心代码 void positionadd(Multiway_tree*root, int n) { if (!root)return; Multiway_tr ...

  7. Multimap的初使用

    之前不知道这个类型使用,在朋友的推荐下进行了个实际操作. 类似这种查询,我需要将他们归类拿出来,如果招以前那么拿的话可能要套挺多个循环的. 首先根据查询得到一个 List<Map<Stri ...

  8. Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的,不 ...

  9. BZOJ2668:[CQOI2012]交换棋子(费用流)

    题目描述 有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列的格子只能参与mi,j次交换. 输入输出格式 输入格式: 第一行 ...

  10. Laravel-安装composer

    一.系统环境   Laravel框架有些系统上的要求,因此需要保证自己运行环境.要求的环境有:对于PHP的版本要求比较法高,其他的是扩展,可以在php.ini文件中开启 PHP >= 5.5.9 ...