JavaScript的团队编程规范

本规范是针对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;
     //......其他代码
});
时间: 2024-08-25 20:48:31

JavaScript的团队编程规范的相关文章

辛星浅析JavaScript中的编程规范

这是接着上一篇的博文写的,首先说一下编程规范的重要性吧,它可以让我们的代码保持一致性,可预测,更易于阅读和理解.一个新的开发者可以通过阅读规范,理解其他团队成员书写的代码,更快的上手干活. 第一点就是缩进. 很糟糕的一件事就是不一致的缩进,因为它看上去像是遵循了规范,但是可能一路上伴随着混乱和惊奇,重要的是规范的使用缩进. 一些开发人员喜欢用tab制表符缩进,因为任何人都可以调整他们的编辑器以自己喜欢的空格数来显示tab.也有人喜欢用空格,通常是四个空格.一般这个无所谓,只要团队每个人都遵循同一

前端代码编码和设计规范系列——JavaScript编程规范

1文档信息 条目 内容 项目编号 通用 项目名称 通用 标题 JavaScript编程规范 类别 规范文档 当前 试用草稿 摘要 当前版本 V1.0 日期 2015/11/9 作者 徐维坚(xuweijian) 文档拥有者 内部公开 文件 前端规范系列-JavaScript篇.docx 2修改历史 编号 修订人 修订内容简述 修订 日期 修订前 版本号 修订后 版本号 V0001 徐维坚 编程规范文件编写,草稿试用版公布 2015/11/10 V1.0 规范前言 良好的编程规范对于软件的开发与维

Javascript模块化编程-规范

实现Javascript模块化,固然很重要,但是怎样才能实现国际上都能认可的模块化呢?模块化编程规范随应运而生. 目前Javascript模块化规范主要有两种:CommonJS和AMD. CommonJS: 09年,美国程序开发人员Ryan Dahl创造了node.js项目,将JS运用于服务器端. 由于后台服务端的业务比较复杂,如果没有模块化编程规范,后台维护和开发将变得异常艰难. node.js的模块系统,就是参照CommonJS规范实现的.在CommonJS中,require(),用于加载模

javascript编程规范

一.javascript模块化编程规范: 二.关于commenjs规范和AMD规范: 根本不同:前者用于服务器端同步加载模块:后者是客户端异步加载模块. 同点:两者都有一个全局函数require(),用于加载模块:只是AMD规范中的require函数需要有2个参数. 三.CommonJS 出现时间更早,代表有:Node.js的模块系统,就是参照CommonJS规范实现的.在CommonJS中,有一个全局性方法require(),用于加载模块.假定有一个数学模块math.js,就可以像下面这样加载

微软编程规范(文档)

项目编程规范 第一章 概述. 5 术语定义. 5 Pascal 大小写. 5 Camel 大小写. 5 文件命名组织. 5 1.3.1文件命名. 5 1.3.2文件注释. 5 第二章   代码外观. 7 2.1  列宽. 7 2.2  换行. 7 2.3  缩进. 7 2.4  空行. 7 2.5  空格. 8 2.6  括号 - () 8 2.7  花括号 - {} 9 第三章 程序注释. 10 3.1  注释概述. 10 3.2  文档型注释. 10 3.3  单行注释. 11 3.4  注

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

Javascript模块化开发 – AMD规范

通行的Javascript模块规范共有两种:CommonJS和AMD. 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程.这标志"Javascript模块化编程"正式诞生.因为老实说,在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限:但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程. node.js的模块系统,就是参照CommonJS规范实现的.在CommonJS中,有一个全局性

node.js编程规范

B.1缩进 因为Node.js代码中很容易写出深层的函数嵌套,过多的空格会给阅读带来不便,因此我们选择两空格缩进 B.2行宽 为了保证在任何设备上都可以方便地阅读,我们建议把行宽限制为80个字符. B.3 语句分隔符 建议一律使用分号( ; ),哪怕一行只有一个语句,也不要省略分号. B.4 变量定义 永远使用var 定义变量,而不要通过赋值隐式定义变量.因为通过赋值隐式定义的变量总是全局变量,会造成命名空间污染. 使用var 定义变量时,确保每个语句定义一个变量,而不要通过逗号( , )把多个

浅谈 JavaScript 编程语言的编码规范

对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦.软件存在的长期价值直接与编码的质量成比例.编码规范能帮助我们降低编程中不必要的麻烦.而 JavaScript 代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注. 本文浅谈 JavaScript 编程中关