Ext JS 4.0编码规范
- 格式:pdf
- 大小:301.83 KB
- 文档页数:9
Extjs4.0.7 desktop初级搭建涉及内容:1.classes.js的拆分2.App.js和Settings.js里代码的含义3.桌面图标的换行4.一些小小的修改首先上官网上下载最新版本的Extjs,本次讲解以4.0.7版本为例,下载地址/products/extjs/download/ext-js-4.0.7/1234然后打开myeclipse新建一个web project工程,这个工程的结构如下其中core文件夹用于存放desktop的核心代码css文件夹用于存放样式表ext文件夹用于存放ext-all.js等images文件夹用于存放desktop实例中imagesmodules文件夹用于存放桌面上显示的模块resources文件夹用于存放desktop实例自带的壁纸文件夹wallpapers 和Extjs中resources下的themes文件夹接下来把App.js,Settings.js和index.jsp(即desktop.html)放在webroot 目录下面一.classes.js的拆分:首先来看一下index.jsp中的代码<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN""/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=utf-8"><title>extjs4 desktop</title><!-- css --><link rel="stylesheet"type="text/css" href="js/css/ext-all.css"/><link rel="stylesheet"type="text/css" href="js/css/desktop.css"/><!-- base js --><script type="text/javascript"src="js/ext/ext-all.js"></script><script type="text/javascript"src="js/ext/ext-lang-zh_CN.js"></script> <!-- core js --><script type="text/javascript"src="js/core/Module.js"></script><script type="text/javascript"src="js/core/Video.js"></script><script type="text/javascript"src="js/core/Wallpaper.js"></script> <script type="text/javascript"src="js/core/FitAllLayout.js"></script> <script type="text/javascript"src="js/core/StartMenu.js"></script> <script type="text/javascript"src="js/core/TaskBar.js"></script><script type="text/javascript"src="js/core/ShortcutModel.js"></script> <script type="text/javascript"src="js/core/Desktop.js"></script><script type="text/javascript"src="js/core/App.js"></script><!-- module js --><script type="text/javascript"src="modules/WallpaperModel.js"></script> <script type="text/javascript"src="modules/VideoWindow.js"></script> <script type="text/javascript"src="modules/BogusModule.js"></script> <script type="text/javascript"src="modules/BogusMenuModule.js"></script> <script type="text/javascript"src="modules/TabWindow.js"></script> <script type="text/javascript"src="modules/GridWindow.js"></script> <script type="text/javascript"src="modules/AccordionWindow.js"></script> <script type="text/javascript"src="modules/SystemStatus.js"></script><script type="text/javascript"src="modules/Notepad.js"></script><!-- config js --><script type="text/javascript"src="Settings.js"></script><script type="text/javascript"src="App.js"></script> <script type="text/javascript">Ext.Loader.setPath({'Ext.ux.desktop': 'js',MyDesktop: ''});Ext.require('MyDesktop.App');var myDesktopApp;Ext.onReady(function () {myDesktopApp = new MyDesktop.App();});</script></head><body><a href=""target="_blank"alt="Powered by Ext JS"id="poweredby"><div></div></a></body></html>其实有了这段代码就算是拆分完了,但是还不够,我们还需要修改两个地方,1.settings.js中修改2.App.js中修改以上两处如果不改当你在桌面上点击右键来改变桌面背景图片时会发生错误。
js 规范JavaScript(简称JS)是一种广泛用于动态网页编程的脚本语言。
为了保持代码的一致性和可读性,编写高质量的JavaScript代码是非常重要的。
下面是一些常见的JavaScript编码规范,可以帮助开发人员编写清晰、易于维护的代码。
1. 使用严格模式:在每个JavaScript文件的顶部使用"use strict"指令启用严格模式。
严格模式可以检测并修复一些常见的编码错误,并提供更好的代码优化。
2. 缩进和格式化:使用4个空格作为缩进的标准,并始终在代码块、对象和数组的每个元素之间留出空格。
这样可以提高可读性,并使代码更易于理解。
3. 命名约定:使用驼峰命名法(camelCase)来命名变量、函数和对象。
避免使用单个字符或者无意义的命名。
同时,使用有意义的变量和函数名可以增加代码的可读性。
4. 注释:在代码中使用注释来解释代码的功能和设计理念。
对于复杂的逻辑或者非常重要的代码块,最好添加注释。
这可以帮助其他开发人员更容易地理解你的代码。
5. 函数和方法的使用:函数和方法的命名应具有描述性和一致性。
确保每个函数只完成一个特定的任务,并保持函数的代码行数尽可能的小。
6. 变量和常量的声明:使用关键字const来声明不可变的常量。
对于可变的变量,使用关键字let。
这样可以提高代码的可维护性并防止意外的值改变。
7. 避免使用全局变量:全局变量容易导致命名冲突和意外的代码副作用。
优先使用局部变量,并将变量的作用范围尽可能限制在最小范围内。
8. 条件语句和循环结构:在条件语句和循环结构中使用大括号{}来明确代码块的边界。
这样可以避免潜在的错误,并提高代码的可读性。
9. 错误处理:在代码中使用try-catch语句来处理潜在的错误和异常。
这可以确保代码在发生错误时仍然能够正常运行,并提供错误信息。
10. 引号的使用:对于字符串,使用单引号''或双引号""没有差别,但要保持一致。
js代码规范JavaScript代码规范(1000字)JavaScript是一种广泛使用的脚本语言,具有灵活性和强大的功能。
为了使代码可读性更好、易于维护和共享,遵循一定的代码规范是非常重要的。
下面是一些常用的JavaScript代码规范。
1. 缩进:使用4个空格作为缩进。
不要使用制表符。
2. 空格:在运算符和操作数之间使用空格,使代码更易读。
3. 大括号:在if、for、while等语句中始终使用大括号。
即使语句只有一行,也应使用大括号。
这样可以减少错误,并提高代码的可读性。
4. 变量命名:使用驼峰命名法(camel case)命名变量和函数。
变量名应具有描述性,并遵循一致的命名约定。
5. 常量命名:使用全大写字母和下划线命名常量。
示例:MAX_LENGTH。
6. 注释:使用注释来解释代码的目的和用途。
对于复杂的代码块或特殊的算法,添加详细的注释是非常重要的。
7. 函数:函数应该具有描述性的名字,并且只完成一个任务。
函数应该尽量保持简短,并避免嵌套过深。
8. 字符串:使用单引号或双引号括起字符串,并保持一致。
示例:var name = 'John';。
9. 变量声明:始终使用var关键字声明变量。
这样可以提高代码的可读性,并避免变量泄漏到全局作用域。
10. 分号:在每条语句的末尾添加分号。
这样可以避免出现一些难以排查的错误。
11. 引号:避免在对象字面量中使用引号。
示例:var person = {name: 'John', age: 30};。
12. 布尔类型:避免使用布尔类型的构造函数。
示例:var isValid = true;。
13. 比较运算符:使用全等(===)和不全等(!==)运算符进行比较。
不要使用双等号(==)进行比较。
14. 避免全局变量:避免在全局作用域中定义变量。
将变量封装在函数内部,以减少变量冲突和增加代码的可维护性。
15. 异常处理:在可能引发错误的代码块中使用try-catch语句来处理异常。
Javascript编码规范 (1.0) o简介▪编撰▪要求o空格o对齐和缩进o换行o行长度▪字符串过长截断▪函数调用时参数过多▪三元运算符过长▪过长的逻辑条件组合▪过长的JSON和数组▪单行和跨行参数混用▪数组和对象初始化的混用o命名▪命名法说明▪变量名▪参数名▪函数名▪方法/属性▪私有(保护)成员▪常量名▪类名▪枚举名▪枚举的属性▪命名空间▪语义o语法▪变量声明▪字符串▪对象、数组和正则▪内置原型▪继承▪异常o注释▪类型定义▪文件注释▪命名空间注释▪类注释▪函数/方法注释▪事件注释▪全局变量注释▪常量注释▪细节注释o其它o参考简介本文档主要的设计目标是商业体系前端Javascript开发风格保持一致,使容易被理解和被维护。
编撰张立理、erik、顾轶灵、李玉北、王海洋、王杨、周莲洁。
本文档由商业运营体系前端技术组审校发布。
要求在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST)。
关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"被定义在rfc2119中。
空格在特定的位置加上空格有助于代码的可读性,以下位置必须(MUST)加上空格:∙除括号外,所有运算符的前后,如∙用作代码块起始的左大括号{前,包括if、else、try、finally这些关键字之后,以及函数定义的参数列表之后∙以下关键字之后:for、switch、while∙对象初始化({ ... })的每个属性名的冒号:后∙所有逗号,后∙单行的对象初始化({ ... })左大括号{后和右大括号}前注意,在函数参数列表之前不得(MUST NOT)加上空格,以期和函数调用保持一致。
密级:文档编号:版本号:V1.0JavaScript编程规范XXXX有限公司--------------------------------------------------------------------- XXXX有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何第三方,或进行修改后使用。
文件更改摘要:目录一、命名规范 (4)1.一般文件及目录命名规范: (4)2.变量命名规范: (4)3.对象命名规范: (5)4.函数命名规范: (5)二、书写格式规范 (6)1.变量使用规范 (6)2.标记的缩进规范 (6)3.注释规范 (6)4.修改注释规范 (7)一、命名规范1. 一般文件及目录命名规范:A.公共函数:“模块名_Common.js”表示,其中,模块名的首字母应大写,例如:客户模块公共函数文件命名为“Cus_Common.js”。
B.列表显示:“模块名+List.js”表示,其中,模块名的首字母应大写,例如:客户列表模块文件命名为:“CusList.js”。
C.增加操作:“模块名+Add.js”表示,其中,模块名的首字母应大写,例如:增加客户模块文件命名为:“CusAdd.js”。
D.修改操作:“模块名+Edit.js”表示,其中,模块名的首字母应大写,例如:修改客户模块文件命名为:“CusEdit.js”。
E.文件名中不能包含任何的空格。
2. 变量命名规范:A.常量以及全局变量名必须全部使用大写字母,常数名中的多个单词使用下划线“_”分隔,例如:var CONST_ED_SFA = "系统错误";B.变量名除首字母小写外,其他单词首字符必须大写,并且必须采用有意义的单词命名,例如:var oDate = new Date();var datStructCustType = oXBDetail.RequestData;C.变量名必须使用其类型的所写字符串开始。
Ext 4 更新手册Ext 4有志成为Web程序革命性的开发平台。
框架中几乎每个组件都作了改进。
对于Ext3,4.0许多组件以及子系统都是表现得焕然一新!Ext 4概述一般性问题这些问题在Ext Core及Ext JS都有表现。
Ext 3的兼容性几次更新ExtJS累积下来,感觉当然就是第4版的变化幅度最大。
第4版带来了许多新的内容,这些内容并不全部兼容于Ext3。
然而,我们尽力可以做到最大化的兼容。
JS兼容化文件加载Ext4完毕后,你可选择加载兼容化文件。
该文件的目的在于提供兼容Ext3的简写方式和覆盖新参数为适合旧版的参数。
沙箱模式Ext4完全基于沙箱设计的,因此可以让旧版的Ext与Ext4在同一个浏览器运行时中做到兼容。
从JavaScript角度看,原来所有修改对象原型的方法已被转移,转移到全局对象Ext之下。
现在只需要建立一个Ext对象的引用,分配不同的名称,就可以从以前旧版本的Ext中区分开来。
在标签markup/CSS方面,由于Ext4采用了Compass和SASS框架并通过模板生成CSS,所以很容易设定一个前缀,供CSS规则之用,比如Ext.baseCSSPrefix属性就是对应的前缀。
结果,要与旧版Ext的CSS区分开来,也不是什么难事了。
包与命名空间的更新在重构过程中,全体类和包的结构已经发生了变化。
这些变化将是根据严格的命名规则来规范的,这一点对于重构的结果非常重要,以便于我们能更轻松地查找某一个类。
例如Ext3的Button类、CycleButton类和SplitButto类就连同其他类归类在/widgets中。
尽管不同层次的对象却也直接地命名在全局对象Ext身上。
在Ext 4,每一个类根据其特性的相似来决定其包的位臵。
虽然只是命名上的变化,但比起Ext3能更精确地描述对象。
同样拿Button 按钮为例子,Ext4的类这样分配:●单独设一个包src/button/●代码划分出一个新的命名空间●基于包改名,如Ext.SplitButton→Ext.button.Split为了尽可能地照顾Ext3的旧命名方式,Ext4的类有一个特殊属性称作“alternateClassName”,通过这个属性就可以让Ext3遗留项目采用Ext4新的类库。
软件开发中的编码规范和代码注释规范在软件开发中,编码规范和代码注释规范对于代码的可读性和可维护性起着至关重要的作用。
编码规范是一组约定俗成的规则,旨在规范代码的书写和格式化,使代码更加清晰易读,而代码注释规范则是指在代码中添加注释的规则和标准。
本文将分别从编码规范和代码注释规范两个方面展开讨论,以期为软件开发人员提供一些有益的指导和建议。
编码规范编码规范是指编程时应遵守的一系列规则和约定。
它不仅仅包括代码的格式化和排版,还包括一些最佳实践和设计思想。
良好的编码规范可以提高代码的可读性、减少错误、提高维护性,并且有助于多人协作开发。
下面我们将从代码格式化、命名规范和最佳实践三个方面介绍编码规范的内容。
1.代码格式化代码的格式化是指代码的排版和结构。
良好的格式化可以使代码更加清晰易读,便于他人阅读和理解。
以下是一些常见的代码格式化规范:-缩进:使用统一的缩进风格,比如使用4个空格或者一个制表符来进行缩进。
-行长:避免单行代码过长,建议控制在80-120个字符以内。
-空格和换行:在运算符两侧和逗号后应加空格,适当换行以提高代码的可读性。
2.命名规范良好的命名规范可以使代码的含义更加清晰明了。
下面是一些常见的命名规范约定:-变量名:使用有意义的变量名,遵循驼峰命名法或者下划线命名法。
-函数名:使用动词或动宾结构,清晰地表达函数的作用。
-常量名:使用大写字母和下划线来表示常量。
3.最佳实践除了代码格式化和命名规范,编码规范还包括一些最佳实践和设计思想,比如:-模块化:尽量将代码分解成独立的模块,便于复用和维护。
-函数设计:函数应该短小精悍,只做一件事情,并且要有清晰的输入输出。
-错误处理:合理处理异常情况,避免出现不可预期的错误。
-注释:代码中应该包含必要的注释,便于他人理解和维护。
代码注释规范代码注释是为了在代码中解释其含义和逻辑,以便他人理解和维护代码。
良好的代码注释可以使代码更具可读性和可维护性。
下面我们将从注释的内容、格式和位置三个方面介绍代码注释规范的内容。
JS规范文档范文JavaScript(简称JS)是一种广泛应用于Web开发的脚本语言。
为了提高代码的可读性、维护性和可扩展性,JavaScript社区制定了一系列代码规范。
本文将介绍一些常见的JavaScript规范,并提供一些编码建议和最佳实践。
一、命名规范1. 变量和函数名使用驼峰命名法(camelCase),即首字母小写,后面每个单词的首字母大写。
2. 类名使用帕斯卡命名法(PascalCase),即每个单词的首字母大写。
3.常量使用全大写字母,多个单词用下划线分隔。
4.避免使用单个字符或者全称不清晰的缩写命名。
二、缩进和空格1.使用4个空格进行缩进,不使用制表符。
2.在每个逻辑块之前添加空行,提高代码的可读性。
3.运算符两侧添加空格,增加代码的可读性。
三、注释规范1.使用行注释(//)或者块注释(/**/)对代码进行注释。
2.注释应该清楚地描述代码的功能和用途。
3.代码的重要或复杂部分应该进行详细的注释,帮助他人理解代码。
四、函数规范1.函数应该完成一个具体的任务,保持简洁和可复用。
2.函数的命名应该清晰表达其功能。
3.函数的参数应该明确,避免使用过多的参数,可以使用对象作为参数。
4.函数应该有明确的返回值,避免使用全局变量。
五、条件语句和循环1.使用大括号({})包裹条件语句和循环体,即使只有一行代码。
2.在条件语句中始终使用严格等于(===)运算符,避免隐式类型转换。
3.避免在条件判断中使用赋值操作符(=),使用比较操作符(==或者===)。
六、模块化和文件结构1. 将JavaScript代码分为多个模块,每个模块负责一个功能。
2. 使用ES6的模块化语法(import和export)进行模块化开发。
3.将不同功能的文件组织到不同的文件夹中,提高代码的可维护性。
七、错误处理1.避免使用全局异常处理,应该在代码内部进行错误处理。
2. 使用try-catch语句捕获和处理可能的异常。
3.使用适当的错误消息和错误类型,方便调试和定位问题。
HTML & JavaScript编码规范1. 简介1.1 总则编码规范用于提供统一编码标准,旨在指导翰子昂实训体系学生的源代码文件的规范化,以保证开发团队的协作和系统的后期维护能有效进行,编码规范同时可作为代码评审的依据。
1.2 目的本规范提供一个HTML与JavaScript编码的统一标准,目的在于在软件开发过程中基于HTML与JavaScript的代码在整个开发团队中能够始终保持一致。
1.3 适用范围本规范适用于翰子昂实训体系内所有应用HTML与JavaScript代码的项目开发与评审活动。
2. 格式2.1 缩进1. 最高一级的父标记采用左对齐顶格格式书写。
2. 下一级标记采用左对齐向右缩进一个TAB的格式书写。
再下一级依此类推,分别左对齐相对于父标记向右缩进一个TAB的格式书写。
3. 同一级标记的首字符上下必须对齐。
4. 首行缩进不要使用空格来达到效果,规范的做法是在样式表中定义p {text-indent: 2e m;} 然后给每一段加上<p>标记,注意,一般情况下,请不要省略</p>结束标记。
2.2 排版1. 不同语种的文字之间应该有一个半角空格,但避头的符号之前和避尾的符号之后除外汉字之间的标点要用全角标点,英文字母和数字周围的括号应该使用半角括号。
2. 为了最大程度的发挥浏览器自动排版的功能,在一段完整的文字中请尽量不要使用< br> 来人工干预分段。
3. 所有的字号都应该用样式表来实现,禁止在页面中出现<font size=?>标记。
4. 请不要在网页中连续出现多于一个的空格,也尽量少使用全角空格(英文字符集下,全角空格会变成乱码),空白应该尽量使用text-indent,padding,margin,hspace,vspace 以及透明的gif图片来实现。
5. 中英文混排时,我们尽可能的将英文和数字定义为verdana和arial两种字体。
产品源代码质量检测:JavaScript编码规范(A0)目录前言 ................................................................. 错误!未定义书签。
1概述 (4)2文件引用及参考 (4)3声明规则 (4)3.1变量 (4)3.2函数 (6)4命名规则 (7)4.1构造函数/类 (7)4.2变量/对象属性 (7)4.3常量 (8)4.4命名空间 (8)4.5函数/对象方法 (8)4.6事件 (9)5注释规则 (9)5.1通用注释规则 (9)5.2 JavaScript文件注释 (10)5.3函数/方法注释 (10)5.4变量/属性注释 (11)6排版规则 (11)6.1文件结构 (11)6.2缩进 (11)6.3分号 (11)6.4空格 (12)6.5行排版 (12)6.6空行 (12)6.7语句 (12)6.7.1表达式语句 (12)6.7.2复合语句 (13)6.7.3 if-else语句 (13)6.7.4 for语句 (13)6.7.5 for-in语句 (13)6.7.6 while语句 (13)6.7.7 do-while语句 (13)6.7.8 switch语句 (14)6.7.9 try-catch-finally语句 (14)7字符集编码规则 (14)8编码健壮性遵循原则 (14)8.1合理使用闭包 (14)8.2合理使用for和for-in循环 (15)8.3避免无限循环 (16)8.4区分===和== (16)8.5禁止使用with(){} (16)8.6字符串拼接 (16)8.7避免在函数中定义全局变量 (17)8.8避免在JavaScript中包含过多的HTML、CSS内容 (17)8.9异常处理 (17)9安全 (18)9.1 JSON串的安全过滤 (18)9.2 JavaScript脚本攻击 (18)9.3 Cookie泄露 (18)9.4防止js代码泄露 (18)10性能优化 (18)10.1合理使用prototype (18)10.2本地缓存对象属性 (18)10.3减少操作HTML DOM结构的次数 (19)10.4引用JavaScript文件 (19)10.5事件代理 (19)11第三方框架引入规范 (19)12安全性要求 (19)13附录 (19)13.1一致性约束 (19)13.2保留字 (20)13.3 JSON格式 (21)13.4常用类型值举例 (22)13.5数据处理建议 (23)13.5.1数据处理控件 (23)13.5.2数据格式与处理 (23)13.5.3缓存使用 (23)JavaScript编码规范1 概述本规范适用于公司产品JavaScript程序开发。
编码规范及其应用编码规范是一种对编写代码的规范化要求和规范化方式,主要目的是提高代码的可读性和可维护性。
在软件开发中,编写高质量的、易读、易维护的代码是至关重要的,而编码规范则是实现这一目标的重要手段之一。
1. 为什么需要编码规范?编码规范有助于提高代码质量,降低代码维护成本,增强代码的可读性和可维护性。
编码规范还可以提高团队协作效率,减少团队成员之间的沟通成本和规范化的执行,使得团队成员可以更加专注于业务逻辑的实现。
2. 编码规范的基本原则编码规范的基本原则包括一致性、可读性、可维护性和可扩展性。
一致性是指编码规范应该在整个项目中一致地应用,以便开发者可以轻松地阅读和维护代码。
可读性是指代码应该尽可能地易于理解和阅读,减少不必要的歧义和模糊性。
可维护性是指代码应该易于维护,与时间和需求的变化保持一致,并且易于被更新或扩展。
可扩展性是指代码应该易于扩展或修改,以满足未来需求的变化。
3. 编码规范的主要内容编码规范的主要内容包括命名约定、缩进和空格、代码注释、函数和类的设计以及代码重构。
命名约定是指变量、函数、类和文件应该如何命名,以使得代码易于理解和维护。
缩进和空格是指代码缩进的方式和空格的使用,以使得代码易于理解和阅读。
代码注释是指注释的使用方法和规范,以便阐明代码的含义和目的,使得代码易于维护。
函数和类的设计是指函数和类的设计原则和规范,以使得代码易于阅读、测试和维护。
代码重构是指对已有代码进行修改和重构,以提高其可读性、可维护性和可扩展性。
4. 编码规范的应用编码规范应该在软件开发的整个过程中应用,从需求分析、设计、实现到测试和发布,以确保代码质量的一致性和稳定性。
在编码过程中,开发者应该根据编码规范来进行代码的编写和测试,以确保代码的可读性、可维护性和可扩展性。
在代码审查和代码更新时,团队成员应该遵守编码规范,以保证代码质量的稳定性和一致性。
在发布软件时,开发团队应该遵守编码规范和最佳实践,以确保代码的质量和性能,减少问题的重现和修复成本。
JavaScript的代码规范作为一门常用且灵活的编程语言,JavaScript能够为网页开发带来很多便利。
然而,由于其灵活性,JavaScript代码往往容易出现混乱和难以维护的问题。
为了提高代码的可读性和可维护性,制定并遵守一套良好的JavaScript代码规范是至关重要的。
一、命名规范1. 变量名、函数名和方法名应该使用驼峰命名法,即首字母小写,后续单词首字母大写。
例如:firstName。
2. 常量名应该全部大写,多个单词之间用下划线(_)分隔。
例如:MAX_COUNT。
3. 类名应该使用帕斯卡命名法,即首字母大写,后续单词首字母大写。
例如:Person。
二、缩进和空格1. 使用两个空格进行缩进,并确保在代码块之间的一致性。
2. 操作符前后应该加上空格,例如:var x = y + z;。
3. 在大括号({})前使用一个空格,例如:if (x > 0) {。
4. 在逗号(,)后面使用一个空格,例如:var fruits = ['apple', 'banana', 'orange'];。
三、注释规范1. 使用注释来解释代码的意图和功能,提高代码的可读性。
2. 使用单行注释(//)或多行注释(/* */)来注释代码。
3. 在函数、类和方法的上方使用多行注释来说明其功能和输入输出。
四、代码格式1. 所有语句结尾都应该加上分号(;),即使在可选的情况下也应该如此。
2. 在逻辑行结束后换行,不要过长的一行代码。
3. 在操作符之间使用空格,但在逗号后不需要加上空格。
4. 使用合理的缩进,保持代码块的整洁和可读性。
五、变量和常量声明1. 使用var来声明变量,避免使用全局变量。
2. 在函数或代码块的顶部声明变量,避免变量声明的提升带来的问题。
3. 声明变量时给其赋初值,避免出现undefined的情况。
4. 使用const或let来声明常量或块级作用域的变量,以提高代码的可维护性。
JS代码规范javascript代码规范目录:JavaScript文件缩进行宽注释变量声明方法声明命名语句-简单语句-复合语句-标签- return语句- if语句- for语句- while语句- do语句- switch语句- try语句- continue语句- with语句空格额外的建议- {}和[]-逗号操作符-块作用域-赋值表达式- ===和!==操作符-令人混淆的加和减-邪恶的evalJavaScript文件JavaScript程序应该作为一个.js文件存储和发布。
JavaScript代码不应该嵌入在HTML文件里,除非那些代码是一个单独的会话特有的。
HTML里的JavaScript代码大大增加了页面的大小,并且很难通过缓存和压缩来缓解。
<scriptsrc=>标签应该在body里越靠后的位置越好。
这减少了由于加载script而导致的其它页面组件的延迟。
没有必要使用language或者type属性。
由服务器而不是script标签来决定MIME类型。
缩进缩进的最小单位是4个空格。
不要使用tab键,because (as of this writing in the 21stCentury) there still is not a standard for the placement oftabstops.使用空格会引起文件变大,但是这点大小对局域网无关紧要,而且差别被minification消除了。
行宽不要让一行代码超过80个字符。
当一条语句不能在单独一行写完时,可能有必要拆分它。
在操作符后进行拆分,最好是在逗号后面拆分。
操作符后面进行拆分减少了通过插入分号伪装copy-paste错误的可能性。
下一行应该缩进8个空格。
注释慷慨的写注释。
留下一些供需要理解你做了什么的人们(可能是你自己)下次阅读的信息是有用的。
注释应该书写良好和清晰,就像它们标注的代码一样。
偶尔小幽默一把也是可以的。
js书写规范JavaScript是一种脚本语言,用于在网页上实现交互性和动态效果。
通过书写规范,可以提高代码的可读性和可维护性,使团队成员更容易协作和理解代码。
下面是JS书写规范的一些要点:1. 缩进:- 使用四个空格进行缩进,不要使用tab键。
- 使用空格而不是制表符,这样可以确保在不同的编辑器和环境中具有一致的缩进。
2. 变量命名:- 使用有意义的变量名,可以清晰地表达变量的用途。
- 使用驼峰命名法:第一个单词小写,后续单词首字母大写,如:firstName。
- 避免使用单个字符的变量名,除非作为循环变量。
3. 常量命名:- 使用全大写字母和下划线,如:MAX_WIDTH。
- 如果需要表示一个常量对象,可以将单词首字母大写,如:ColorPalette。
4. 函数命名:- 使用动词加名词的形式来表示函数的作用,如:getUserName。
- 避免使用嵌套的函数,使代码更易于阅读和理解。
5. 注释:- 在代码的关键部分加上注释,能够帮助他人理解你的代码。
- 使用注释来解释代码的意图和功能,而不是只是重复代码的操作。
- 避免使用无用或过多的注释,代码应该自解释。
6. 语句和表达式:- 每行代码只包含一个语句,以提高代码的可读性。
- 不要省略分号,即使在省略分号的情况下,解析器能够正确解析代码。
7. 括号:- 在条件语句、循环语句和函数定义中使用括号,即使只有一行代码。
- 使用花括号作为代码块的起始和结束标记,使代码更易读。
8. 字符串:- 使用单引号或双引号表示字符串,保持一致性。
- 避免过长的字符串行,可以使用字符串连接符 '+' 折行。
9. 流程控制:- 使用适当的流程控制语句,如if语句、for循环等。
- 避免使用过多的else if语句,可以使用switch语句替代。
10. 错误处理:- 在可能出错的代码块中使用try-catch语句进行错误处理。
- 在catch语句中,使用适当的错误提示或日志记录。
Extjs4GridPanel的⼏种样式使⽤介绍简单表格排序,显⽰某列,读取本地数据复制代码代码如下://本地数据var datas = [['1', 'gao', 'man'], ['2', 'gao', 'man'], ['3', 'gao', 'man']];//创建⾯板Ext.create('Ext.grid.Panel', {title: 'easy grid',width: 400,height: 300,renderTo: Ext.getBody(),frame: true,viewConfig: {forceFit: true,stripRows: true},store: {//配置数据代理fields: ['id', 'name', 'gender'],proxy: {type: 'memory',data: datas,reader: 'array' //数据读取器为数据读取},autoLoad: true},columns: [{ //⾃定义列信息header: 'id',width: 30,dataIndex: 'id', //绑定fields中得字段sortable: true}, {header: 'name',width: 80,dataIndex: 'name',sortable: true}, {header: 'gender',width: 80,dataIndex: 'gender',sortable: true}]})表格列:⾏号, bool⾏转成是否,⽇期格式化输出(date,top day), number数据类型格式化输出(change,volume),Action列(操作列)代码;复制代码代码如下:Ext.tip.QuickTipManager.init();Ext.create('Ext.data.Store', {storeId: 'sampleStore',fields: [{name: 'framework',type: 'string'}, {name: 'rocks',type: 'boolean'}, {name: 'volume',type: 'number'}, {name: 'topday',type: 'date'}, {name: 'change',type: 'number'}, {name: 'date',type: 'date'}, {name: 'price',type: 'number'}],data: {'items': [{"framework": "Ext JS 1","rocks": true,"symbol": "goog","date": '2011/04/22',"change": 0.8997,"volume": 3053782,"topday": '04/11/2010',"price": 1000.23}, {"framework": "Ext JS 2","rocks": true,"symbol": "goog","date": '2011/04/22',"change": 0.8997,"volume": 3053782,"topday": '04/11/2010',"price": 1000.23}, {"framework": "Ext JS 3","rocks": true,"symbol": "goog","date": '2011/04/22',"change": 0.8997,"volume": 3053782,"topday": '04/11/2010',"price": 1000.23}]},proxy: {type: 'memory',reader: {type: 'json',root: 'items'}}});Ext.create('Ext.grid.Panel', {title: 'Boolean Column Demo',store: Ext.data.StoreManager.lookup('sampleStore'), columns: [Ext.create('Ext.grid.RowNumberer', { text: '⾏号', width: 40 }), {text: 'Framework',dataIndex: 'framework',width: 100}, {xtype: 'booleancolumn',text: 'Rocks',trueText: '是',falseText: '否',dataIndex: 'rocks'}, {text: 'Date',dataIndex: 'date',xtype: 'datecolumn',format: 'Y年m⽉d⽇'}, {text: 'Change',dataIndex: 'change',xtype: 'numbercolumn',format: '0.000'}, {text: 'Volume',dataIndex: 'volume',xtype: 'numbercolumn',format: '0,000'}, {text: 'Top Day',dataIndex: 'topday',xtype: 'datecolumn',format: 'l'}, {text: 'Current Price',dataIndex: 'price',renderer: Money}, {header: '操作',xtype: 'actioncolumn', //操作列width: 100,items: [{icon: 'e.gif', // 编辑图⽚地址tooltip: ‘编辑', //⿏标over显⽰的⽂字使⽤此功能,必须 Ext.tip.QuickTipManager.init(); handler: function (grid, rowIndex, colIndex) {var rec = grid.getStore().getAt(rowIndex);alert("Edit " + rec.get('framework'));}}, {icon: 'd.gif',tooltip: 'Delete',handler: function (grid, rowIndex,colIndex) {var rec = grid.getStore().getAt(rowIndex);alert("Terminate " + rec.get('framework'));}}]}, {}],height: 200,width: 800,renderTo: Ext.getBody()});下⾯这个图是单击操作(编辑,删除)按钮触发的回调函数的详细信息.下⾯演⽰⾃定义渲染函数效果:复制代码代码如下:Ext.tip.QuickTipManager.init();function customFunction(value, metadata) {if (value > 10) {metadata.style = 'color:red';}return value;}Ext.create('Ext.data.Store', {storeId: 'sampleStore',fields: [ {name: 'custom',type: 'number'}],data: {'items': [{"custom": 10}, {"custom": 100}, {"custom": 1000}]},proxy: {type: 'memory',reader: {type: 'json',root: 'items'}}});Ext.create('Ext.grid.Panel', {title: 'Boolean Column Demo',store: Ext.data.StoreManager.lookup('sampleStore'), columns: [Ext.create('Ext.grid.RowNumberer', { text: '⾏号', width: 40 }), {text: 'custom',dataIndex: 'custom',renderer: customFunction //调⽤⾃定义函数来渲染}],height: 200,width: 800,renderTo: Ext.getBody()});选择模式:Selection选择模式分为三类:1,⾏选择(默认)2.单元格选择3.复选框选择(checkbox组)演⽰单元格选择代码:只需在上述代码配置节当中,加⼊复制代码代码如下:tbar: [{text: '取得所选单元格',handler: function () {var cell = grid.getSelectionModel().getCurrentPosition(); //getSelectionModel()获取当前选择模式,getCurrentPosition()获取当前选择的单元格alert(Ext.JSON.encode(cell));}}],selType:'cellmodel' //设置选择模式为单元格选择:效果:复制代码代码如下:tbar: [{text: '取得所选⾏',handler: function () {var rows = grid.getSelectionModel().getSelection(); //getSelection();获取当前选中的记录数组var msg = [];for (var i = 0; i < rows.length; i++) {var row = rows[i];var myDate = new Date(row.get('date'));msg.push('选中⾏的Date列:' + myDate.toLocaleString()); //转换时间格式}alert(msg.join('\n'));}}],selType: 'rowmodel', //选择模式为⾏选择simpleSelect: true, //简单选择功能开启multiSelect: true, // 启⽤多⾏选择enableKeyNav: true //启⽤键盘导航:效果:复制代码代码如下:tbar: [{text: '取得所选⾏',handler: function () {var rows = grid.getSelectionModel().getSelection(); //getSelection();获取当前选中的记录数组 var msg = [];for (var i = 0; i < rows.length; i++) {var row = rows[i];var myDate = new Date(row.get('date'));var s = grid.getStore(); //获取grid的数据源var number = s.indexOf(row) + 1; //获取⾏号+1 因为⾏号从0开始msg.push('选中第' + number + '⾏的Date列:' + myDate.toLocaleString());}alert(msg.join('\n'));}}],selType: 'checkboxmodel', //选择模式为⾏选择simpleSelect: true, //简单选择功能开启multiSelect: true, // 启⽤多⾏选择enableKeyNav: true //启⽤键盘导航表格汇总 Ext.grid.feature.Summary汇总值计算根据表格的每⼀列进⾏计算,计算⽅式有指定的 summaryType决定.默认的有上图5种.此例应⽤ sum和average复制代码代码如下:Ext.define('TestResult', {extend: 'Ext.data.Model',fields: ['student', {name: 'mark',type: 'int'}]});var grid = Ext.create('Ext.grid.Panel', {width: 200,height: 140,renderTo: document.body,features: [{ftype: 'summary'}],store: {model: 'TestResult',data: [{student: 'Student 1',mark: 84}, {student: 'Student 2',mark: 72}, {student: 'Student 3',mark: 96}, {student: 'Student 4',mark: 68}]},columns: [{dataIndex: 'student',text: 'Name',summaryType: 'count', //进⾏汇总的列名summaryRenderer: function (value) {grid.getStore()return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : ''); }}, {dataIndex: 'mark',text: 'Mark',summaryType: 'average'}]})var grid = Ext.create('Ext.grid.Panel', {width: 200,height: 140,renderTo: document.body,features: [{ftype: 'summary'}],store: {model: 'TestResult',data: [{student: 'Student 1',mark: 84}, {student: 'Student 2',mark: 72}, {student: 'Student 3',mark: 96}, {student: 'Student 4',mark: 68}]},columns: [{dataIndex: 'student',text: 'Name',summaryType: 'count', //进⾏汇总的列名summaryRenderer: function (value) {// grid.getStore()return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : ''); }}, {dataIndex: 'mark',text: 'Mark',summaryType: 'average',,summaryRenderer: function (value) {// grid.getStore()return Ext.String.format(' 平均分为:{0}', value);}]})代码:复制代码代码如下:Ext.define('TestResult', {extend: 'Ext.data.Model',fields: ['student', 'class', {name: 'mark',type: 'int'}]});var grid = Ext.create('Ext.grid.Panel', {width: 400,height: 300,renderTo: document.body,features: [Ext.create('Ext.grid.feature.Grouping',{groupByText: '⽤本字段分组',showGroupsText: '显⽰分组',groupHeaderTpl: '班级: {name} ({rows.length})', //分组显⽰的模板startCollapsed: true //设置初始分组是不是收起})],store: {model: 'TestResult',groupField: 'class',data: [{student: 'Student 1',class: '1',mark: 84}, {student: 'Student 2',class: '1',mark: 72}, {student: 'Student 3',class: '2',mark: 96}, {student: 'Student 4',class: '2',mark: 68}]},columns: [{dataIndex: 'student',text: 'Name',summaryType: 'count', //进⾏汇总的列名summaryRenderer: function (value) {grid.getStore()return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : '');}}, {dataIndex: 'mark',text: 'Mark',summaryType: 'average'},{ dataIndex: 'class',text: 'class'}]})//在不同的列下⾯点击 “⽤本字段分组”那么表格就会⽴即改变分组规则.代码只需要把上⾯的 Grouping 改成 GroupingSummary代码:复制代码代码如下:var datas = [['gao', Date(1922, 02, 03), 2000]];Ext.create('Ext.grid.Panel', {title: '演⽰',frame: true,renderTo: Ext.getBody(),width: 400,height: 300,store: {fields: ['name', 'birth', 'salary'],data: datas,proxy: {type: 'memory',data: datas,reader: 'array'},autoLoad: true},plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})],selType: 'cellmodel',columns: [Ext.create('Ext.grid.RowNumberer', { text: '⾏号', width: 40 }), {header: '姓名',width: 80,dataIndex: 'name',editor: {//定义字段xtype: 'textfield',allowBlank: false,}},{header: '⽣⽇',width: 100,dataIndex: 'birth',xtype: 'datecolumn',editor: {//定义字段xtype: 'datefield',format: 'Y-m-d',allowBlank: false}},{header: '⼯资',width: 100,dataIndex: 'salary', xtype: 'numbercolumn',editor: {//定义字段xtype: 'numberfield',format: '$0,000',allowBlank: false}}]})代码只需:把 CellEditing 改成 RowEditing想要获取修改后的数据,ajax请求服务器,做出响应.复制代码代码如下:grid.on('edit', onEdit, this); //添加编辑事件,获取数据function onEdit(e) {alert(e.record.get('name')); //get()参数是字段名字.}复制代码代码如下:listeners: {load: function(store) {var index = 0;store.each(function(record) {if(record.data.column_name == '1') { //column_name 替换成你的列名, '1' 替换成你的值grid.selModel.selectRow(index,true);}index++;})}}。
装载自:/zack-/archive/2012/05/09/2491440.html修改extjs源码真正解决:ExtJs4.0 GridPanel 数据内容不能选中复制。
extJS 现在依然存在很多bug,有时挺烦人的。
比如,最近就需要复制表格信息,extjs的grid却不支持,研究半天,覆盖了css,但只在非ie的浏览器有效。
修改了extjs源码才解决了在ie的问题。
1、添加以下css代码:<style type="text/css">.x-grid-row{line-height:13px;vertical-align:top;padding:0 1px;-moz-user-select:text!important;-khtml-user-select:text!important;-we bkit-user-select:text!important;}.x-grid-cell{overflow:hidden;font:normal 13px tahoma, arial, verdana, sans-serif;-moz-user-select:text!important;-khtml-user-select:text!im portant;-webkit-user-select:text!important;}.x-unselectable{-moz-user-select:text!important;-khtml-user-select:text!i mportant;-webkit-user-select:text!important;}</style>2、修改extjs4.0的ext-all.js(或ext-all-debug.js)三处代码:找到Ext.override(Ext.core.Element, {....unselectable : function(){var me = this;me.dom.unselectable = "on";//1、把me.dom.unselectable = "on"修改为me.dom.unselectable = ""me.swallowEvent("selectstart", true);//2、把ture改成falseme.applyStyles("-moz-user-select:none;-khtml-user-sel ect:none;");me.addCls(Ext.baseCSSPrefix + 'unselectable');return me;}...});找到 Ext.override(Ext.view.TableChunker, {...metaRowTpl: ['<tr class="' + Ext.baseCSSPrefix + 'grid-row {addlSelector} {[this.embedRowCls()]}" {[this.embedRowAttr()]}>','<tpl for="columns">','<td class="{cls} ' + Ext.baseCSSPrefix +'grid-cell ' + Ext.baseCSSPrefix + 'grid-cell-{columnId} {{id}-modified} {{id}-tdCls} {[this.firstOrLastCls(xindex, xcount)]}"{{id}-tdAttr}><div unselectable="on" //3、把此处的unselectable="on"改成unselectable="" class="' + Ext.baseCSSPrefix + 'grid-cell-inner ' + Ext.baseCSSPrefix + 'unselectable" style="{{id}-style}; text-align: {align};">{{id}}</div></td>','</tpl>','</tr>']...});。
Ext JS 4.0编码规范
Ext JS 4.0 Conventions
编者:王宁 Smiles Van
目录
Ext JS 4.0编码规范 (1)
Ext JS 4.0 Conventions (1)
1. 环境Requirements (2)
1) 浏览器Web Browsers (2)
2) 服务器Web Servers (2)
2. 目录结构Application Structure (2)
1) 基础路径Base Path (2)
2) 开发目录结构Dir Structure for Development (2)
3) 页面引用类库Reference to Ext JS Library (3)
3. 命名规范Naming Conventions (4)
1) 类系统Class System (4)
2) 命名规范Naming Conventions (4)
4. 实践Hands‐on (6)
1. 声明Declaration (6)
2. 配置Configuration (7)
3. 静态成员Statics (8)
4. 错误处理和调试Error Handling & Debugging (8)
5. 参考 (9)
1.环境Requirements
1)浏览器Web Browsers
●支持主流浏览器
●最佳调试浏览器列表:
⏹Google Chrome 10+
⏹Apple Safari 5+
⏹Mozilla Firefox 4+ with the Firebug
2)服务器Web Servers
●主流HTTP Server
2.目录结构Application Structure
1)基础路径Base Path
/dir/to/js/extjs根据项目指定,J2EE Web工程一般在webapp目录建立相关静态文件目录,例如:
●projectname/src/main/webapp/static/
●projectname/src/main/webapp/js/
等。
2)开发目录结构Dir Structure for Development
/dir/to/js/extjs/app【应用目录,包含MVC子目录】
/dir/to/js/extjs/app/controller
/dir/to/js/extjs/app/model
/dir/to/js/extjs/app/store
/dir/to/js/extjs/app/view
/dir/to/js/extjs/ext‐4.0.x【Ext JS SDK独立存放,并裁剪相关目录和文件如下】
/dir/to/js/extjs/ext‐4.0.x/locale【只存放需要的“本地化”文件】
/dir/to/js/extjs/ext‐4.0.x/resources【Ext JS SDK默认静态资源】
/dir/to/js/extjs/ext‐4.0.x/src【Ext JS SDK源代码,供ext.js、ext‐debug.js动态加载类使用】 /dir/to/js/extjs/ext‐4.0.x/bootstrap.js【Ext JS库加载文件,*推荐使用】
/dir/to/js/extjs/ext‐4.0.x/ext‐debug.js【动态加载类,开发调试用】
/dir/to/js/extjs/ext‐4.0.x/ext.js【动态加载类,生产用,*浏览器会产生很多网络连接】
/dir/to/js/extjs/ext ‐4.0.x/ext ‐all ‐debug.js 【压缩版ExtJS 库,开发调试用,*推荐ext ‐debug.js 】 /dir/to/js/extjs/ext ‐4.0.x/ext ‐all.js 【压缩版ExtJS 库,生产用,*推荐用JSBuilder 自定义】 /dir/to/js/extjs/resources 【自定义静态资源,只存放需要的.css 、图片等文件】
/dir/to/js/extjs/ux 【Ext JS 扩展库,只存放需要的.js 文件】
/dir/to/js/extjs/app.js 【应用逻辑】
3) 页面引用类库Reference to Ext JS Library
● 开发用,静态文件与应用部署在一个服务器时:
其中:
⏹ “/static ”为“基础路径”在服务器的URI ;
⏹ 推荐使用bootstrap.js 引用Ext JS 类库。
● 开发用,静态文件与应用部署在不同服务器时:
其中:
⏹ “http://domain/static ”为“基础路径”在静态服务器的URI ;
⏹ 推荐使用bootstrap.js 引用Ext JS 类库。
3. 命名规范Naming Conventions
1) 类系统Class System
⏹ 包含300多个类
⏹ 由于JavaScript 是一种基于对象Object ‐Based 、面向原型Prototype ‐Oriented 语言,所以Ext JS 4.0构建了通用代码架构Common code architecture ,此架构具有: ⏹ 简单易学familiar and simple to learn
⏹ 开发快速、调试简单、无痛部署fast to develop, easy to debug, painless to deploy ⏹ 设计良好、易扩展、易维护well ‐organized, extensible and maintainable
2) 命名规范Naming Conventions
● 类Classes
⏹ 类名仅可包含字母、数字。
数字大多数情况下不推荐使用,除非是在一些技术术语中。
不要使用中划线、下划线等非字符:
⏹ 类应该通过正确命名的“包(Packages )”来组织。
最小包情况时,类名应该紧随
最顶层的“名字空间(Namespace )”:
⏹ 最顶层的“名字空间(Namespaces )”和“类名(Class Names )”应该使用“驼峰
命名法(CamelCased )”,其他都是用小写字母:
非Sencha 官方发布的类,不要使用“Ext ”作为最顶层名字空间。
⏹ 缩写词也要遵守“驼峰命名法(CamelCased )”:
● 源文件Source Files
⏹ 类名直接映射到文件存储路径,每个类一个文件:
“path/to/src ”是“应用(Application )”所在的目录(即包含app 、ext 的应用目录)。
类应该在此“根目录(Root )”下通过“名字空间(Namespace )”组织起来,通过最佳实践去开发、维护和部署。
● 方法和变量Methods and Variables
⏹ 方法和变量命名同类一样,仅可包含字母、数字。
数字大多数情况下不推荐使用,
除非是在一些技术术语中。
不要使用中划线、下划线等非字符;
⏹ 方法和变量命名应该使用“驼峰命名法(CamelCased )”,缩写词也一样;
● 属性Properties
⏹ 非静态的类属性命名规则同上;
⏹ 静态的类属性命名全部使用大写字母:
4. 实践Hands ‐on
1) 声明Declaration
● 旧方法
● 新方法
Ext JS 4使用单一方法:Ext.define 。
⏹ className :类名;
⏹ members :通过键值对(Key ‐value pairs )构成的对象(Object )来表示类成员(Class
Members )的集合;
⏹ onClassCreated :回调函数,可选。
此函数当所有类依赖准备完毕、类自身已经全
部创建时会被调用。
示例:
2)配置Configuration
在Ext JS 4中,有专门的“config”属性,它会在类创建之前被“Ext.Class”的预处理器(Pre‐processors)进行处理,包含以下特性:
●配置(Configurations)区别于其他类成员而被完全独立封装;
●getter和setter方法,如果没有定义,则会在类创建过程中、在类原型中为每一个 配
置属性自动生成;
●每个配置属性还会生成apply方法,自动生成的setter方法会在设置数值之前调用apply
方法,所以可以重写(Override)apply方法,以此在设置数值之前运行自定义逻辑,而且如果apply方法不返回值则setter方法也不会设置相关配置属性。
示例:
示例中的类如何被使用:
3) 静态成员Statics
● 可以通过“statics ”配置项来定义静态成员(Static Members ):
4) 错误处理和调试Error Handling & Debugging Ext JS 4包含一些有用的特性可以帮助错误处理和调试:
● 使用“Ext.getDisplayName()”得到方法的名字,对于抛出错误非常有用:
● 在使用基于WebKit 的浏览器(Chrome 或Safari )调试时,任何使用“Ext.define()”定义的方法抛出错误,方法名和类名都会显示在调用栈(Call Stack )中:
5.参考
Ext JS 4官方SDK下载包ext‐4.0.7‐gpl中docs,此docs包含的官方指南(Guides)为本
文档的主要参考。