本规范是针对javascript函数式编程风格与公司严重依赖于jQuery进行编码的现实制定出来。

禁止使用eval,with与caller(ecma262 v5 的use strict要求)。eval只允许在加密时机器生成。

声明变量必须加上 var 关键字,除了在for(;;)循环等语句中,原则上不允许使用连续声明。因为连 续声明的效率不如分开声明高,而且很容易手误致其暴露到全局作用域下。

常量,全部大写。

变量名,不能使用拼音,英文单词以驼峰风格组织起来。

分号,能加的地方都加(基本上除了for, function, if, switch, try, while外),防止因为这个问题导致压缩失败。

自定义类,只能用于UI库的构建,业务代码不准私自定义类。

原则上不允许使用伪对象(String, Number,Boolean),直接用其字面量。

原则上不允许使用Array与Object,直接用其字面量[], {}。

谨慎处理this,防止绑定失效,指向window,建议使用that引用它。

若想调用函数自身,禁止使用命名函数表达式,在目标函数的第一行编写以下代码实现,详解请google 《命名函数表达式揭秘》:

var self = arguments.callee;

禁止扩展原生对象的原型,特别是Object.prototype。

禁止在页面上对某个元素绑定事件,即下面的代码风格:

<a href="www.nowamagic.net" jump="bbb" onclick="goto(this.jump)">简明现代魔法</a>

禁止使用IE的条件注释,一压缩就没有了。

var f = function () {
/*@cc_on if (@_jscript) { return 2* @*/ 3; /*@ } @*/
};

禁止块内函数声明,详解请google《命名函数表达式揭秘》。

if (x) { //ng
function foo() {}
} if (x) {
var foo = function() {}
}

for-in 循环只能用于object。

禁止使用多行字符串,因为在编译时, 不能忽略行起始位置的空白字符; "\" 后的空白字符会产生奇 怪的错误; 虽然大多数脚本引擎支持这种写法, 但它不是 ECMAScript 的标准规范。

var myString = 'A rather long string of English text, an error message \
actually that just keeps going and going -- an error \
message to make the Energizer bunny blush (right through \
those Schwarzenegger shades)! Where was I? Oh yes, \
you\'ve got an error and all the extraneous whitespace is \
just gravy. Have a nice day.';

原则上不允许字符串拼接HTML代码,请使用前台模板或后台模板。

字符串字面量,使用 ' 优于 "。

注释,使用JSDoc。

每一行不宜过长,写完一段代码后请用IDE把它格式化一下。

为元素添加自定义变量,统一使用"data-"前缀,放便与HTML5的"data-*"机制相衔接。

禁止jQuery使用一行以上的链式操作,非常难读。

元素的选择,多使用ID选择器,类选择器,标签选择器,慎用子元素结构伪类与位置伪类(nth- child,:first,:eq,:gt)

在已有jQuery对象搜找附近的元素节点,不建议用使用多级的find寻找,而使用相关的遍历函数。

JavaScript程序应尽量放到外部的JS文件中,以便压缩与缓存。

标准特性优于非标准特性(如果类库有提供,优先使用类库中的函数)。

$("XXXX").find("YYYY").find("ZZZZ"); //ng
$("XXXX").next() //或者nextUntil, nextAll, prev, prevAll, prevUntl, children, closest, .siblings

为元素添加事件时,考虑的顺序是delegate > live > bind。

jQuery在以下事件中存在问题 change resize mouseenter mouseleave mousewheel,大体上用不了事件代理,像mousewheel事件只能借助于插件。

不在JS文件中留下未来确定不再使用的代码片段。

凡是被jQuery引用到的ID或类名都应该用js_作为前缀,警示其他人在调整样式时把它误删了。

JS代码必须置于$$命名空间对象之内,所有函数的执行从main函数开始。

     ;;;$(function(){
//...其他用到的变量
var $$ = window.$$ = {
//本页面私有的辅助函数1
_assist1:function(){ },
//本页面私有的辅助函数2
_assist2:function(){ },
//本页面私有的辅助函数3
_assist3:function(){ },
//本页面私有的辅助函数4
_assist4:function(){ },
//本页面私有的辅助函数5
_assist5:function(){ },
//....更多的私有函数
//功能1
feature1:function(){ },
//功能2
feature2:function(){ },
//功能3
feature3:function(){ },
//功能4
feature4:function(){ },
//功能5
feature5:function(){ },
//从后台获取的JSON数据统一放到这个对象中,以便其他函数调用
jsons:{},
//....更多需求,一个需求对应一个函数
main:function(){
$$.feature1();
$$.feature2();
$$.feature3();
$$.feature4();
//....在main主函数中调用它们。
}
}
$$.main();
});

从后台获取JSON数据的格式统一为

$.getJSON(url,params,function(json){
if(json && json.status === "1"){
$.flash(json.msg);
$$.jsons["xxxx"] = json;//将JSON保存起来
}else{
$.flash(json.msg,"error")
}
});
$.post(url,params,function(json){
if(json && json.status === "1"){
$.flash(json.msg);
$$.jsons["xxxx"] = json;
}else{
$.flash(json.msg,"error")
}
},"json");

为了实现请求与执行回调相分离,我们使用dependBy函数,这样就有效避免多层嵌套的回调,让代码的易懂性大大提高。

$.dependBy(["list_configs"],$$.jsons,function(){
var json = $$.jsons.ist_configs;
//......其他代码
});

最新文章

  1. [翻译]利用顶点位移的VR畸变校正
  2. 抓包排错-tcp.flags.reset
  3. HTML5 自制本地网页视频播放器
  4. Ext.net 异常统一管理,铥掉可恶的 Request Failure
  5. Linux系统(将web应用部署到tomcat服务器上)
  6. uva 227 Puzzle
  7. Filter和FilterChain具体的使用说明
  8. 【IE6的疯狂之三】IE6 3像素BUG的实例
  9. 浅析Java中synchronized与static synchronized
  10. angularjs 水平滚动选中按钮高亮显示 swiper和回到顶部指令的实现ionic
  11. 《Javascript_Dom 编程艺术》(第2版)读书笔记
  12. .Net Core SignalR 实时推送信息
  13. 聚沙成塔-linux 常用命令
  14. C# 使用 HttpClient 调用 WebService 提示 NoSOAPAction
  15. volatile与synchronized有什么区别?
  16. eclipse打开package explorer视图
  17. day 10 函数入门
  18. C语言第十讲,枚举类型简单说明
  19. unix的sed 用法介绍
  20. POJ 3579 Median(二分答案)

热门文章

  1. Mysql: pt-table-checksum 和 pt-table-sync 检查主从一致性,实验过程
  2. TCPIP协议编程:基于UDP协议的局域网聊天工具的研发
  3. php学习【1】
  4. dts--tests(三)
  5. php结合redis实现高并发下的抢购、秒杀功能【转】
  6. 数据分析处理库Pandas——groupby
  7. IAR 编译时找不到头文件的解决方法
  8. chroot: cannot run command `/bin/bash': No such file&nbs
  9. 宁夏邀请赛F FLOYD
  10. 基本形状的绘制&amp;添加文字