`
cloudtech
  • 浏览: 4722590 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

我的 HTML5/JavaScript 编程规范

 
阅读更多
HTML5/JavaScript 编程规范

一、文本编辑规则

缩进为2个空格,不使用tab
标签全部采用小写字母,如<input type="checkbox" checked>
函数和变量名称小写开头,中间采用骆驼命名法,如:getElementById(...)
类似宏的函数名称全部小写或大写,以下划线分割单词,如:extend_class__
类名称大写字母开头,如 function MyObject(...)
类中方法、变量按作用域不同,采用不同的命名规则。
发布的版本一定要注释掉console.log(...)
单行注释总是: /*...*/。多行注释总是:/**...*/。短注释用://
以//?开头的注释总是属于未完成的临时代码
给属性添加的注释://@attributeName

二、类中方法、变量命名规则

对外暴露的类名称以大写字母开头,如MapPoint
内部使用的类名称以双下划线__开头加大写字母,如__ViewPort
类的公有方法或属性、变量与函数和变量的命名规则相同,如:mapPoint.getDistance
类的私有方法或属性、变量,并且允许被其他内部类访问,以单下划线_加小写字母开头
类的外部不能直接访问的私有方法、变量,以双下划线__加小写字母开头,如:__salaryAmount
类的静态变量以大写字母开头,如:MapPoint.MaxRadius

三、一个JavaScript类模板

/*******************************************************************************
 * h5.hs
 *   cheungmine
 ******************************************************************************/
// 包含其他js文件
usingScript("utils.js");

/*******************************************************************************
 * $MyClassBase
 *   Place comments here
 ******************************************************************************/
function MyClassBase() {
  //?TODO:
}

/*******************************************************************************
 * $MyClass
 *   Place comments here
 * 闭包:
 *   这种公共、私有和特权成员的模式是可行的原因是由于JavaScript有closure闭包。
 *   这意味着类中一个内部的函数总是可以访问这个函数外部的变量和参数,
 *   甚至在外部的函数返回之后。这是这个语言的一个极其强大的特性。
 *   私有和特权成员只能在对象构造的时候生成。
 *   公共成员可以在任意时刻添加。
 ******************************************************************************/
// extend_class__ 声明 MyClass 继承自 MyClassBase
extend_class__(MyClass, MyClassBase);
function MyClass(/* 可以在此放置构造参数列表 */) {
  // 另一种继承类的方法,可以提供不同的构造参数
  // 不要与extend_class__同时使用
  // MyClassBase.call(this);

  /*************
   * 私有成员:*
   ************/
  // 可变参数示例,__args是严格私有变量
  var __args=Array.prototype.slice.call(arguments);

  var __salary = 0;

  // 下面是一个私有方法示例,外部不能访问
  function __parseArgs() {
    self.__salary = 0;
    if (__args.length>=2) {
      this._family = __args[0];
      this.name = __args[1];
      if (__args.length==3)
        self.__salary = __args[2];
      return true;
    }
    return false;
  }

  /*************
   * 特权成员:*
   ************/
  // toString 提供类名称
  this.toString = function () {
    return "MyClassClass";
  }

  this.initialize = function (salary) {
    if (salary!=null)
      this.salaryAmount = salary;
    return __parseArgs();
  }

  // 这是一个外部访问的公有方法,输出构造参数内容
  this.printArgs = function () {
    var i = 0;
    for (i=0; i<__args.length; i++)
      console.log(__args[i]);
  }

  /**
   * 公共成员,但是因为加了下划线,说明我们本意不想被外部直接访问
   * 但允许内部类访问
   */
  this._family = null;
  
  /**
   * 公共成员,外部直接访问
   */
  this.name = null;

  /*************
   * 特权属性: *
   ************/
  //@valid
  this.__defineGetter__("valid",
    function () {
      return (this._family!=null && this.name!=null);
    }
  );

  //@salaryAmount
  this.__defineSetter__("salaryAmount",
    function (v) {
      __salary=v*100;
    }
  );

  /**
   * 放在最后一行,self被内部方法使用
   */
  var self = this;
}
// 下面是类静态变量的例子:
MyClass.prototype.DaysOfYear = 365;

/**
 * utils.js
 *   cheungmine
 */
if(!getElem){
var getElem=(function(){
return function(id){
return document.getElementById(id);
};
})();
}

if(!includeScript){
var includeScript=(function(){
return function(js){
document.write('<script type="text/javascript" src="'+js+'"></script>');
};
})();
}

if(!importScripts){
var importScripts=(function(globalEval){
var xhr=new XMLHttpRequest;
return function importScripts(){
var
args=Array.prototype.slice.call(arguments)
,len=args.length
,i=0
,meta
,data
,content
;
for(;i<len;i++){
if(args[i].substr(0,5).toLowerCase()==="data:"){
data=args[i];
content=data.indexOf(",");
meta=data.substr(5,content).toLowerCase();
data=decodeURIComponent(data.substr(content+1));
if(/;\s*base64\s*[;,]/.test(meta)){
data=atob(data);
}
if(/;\s*charset=[uU][tT][fF]-?8\s*[;,]/.test(meta)){
data=decodeURIComponent(escape(data));
}}else{
xhr.open("GET",args[i],false);
xhr.send(null);
data=xhr.responseText;
}
globalEval(data);
}
};
}(eval));
}

if(!usingScript){
var usingScript=(function(){
return function(js){
try{
  includeScript(js);
}
catch(e){
  importScripts(js);
}
};
})();
}

if(!getBrowserAgent){
var getBrowserAgent=(function(){
return function(){
if ((navigator.userAgent.indexOf('MSIE')>=0)&&(navigator.userAgent.indexOf('Opera')<0))
return "$IE";
else if (navigator.userAgent.indexOf('Firefox')>=0)
return "$FIREFOX";
else if (navigator.userAgent.indexOf('Opera')>=0)
return "$OPERA";
else if (navigator.userAgent.indexOf('Chrome')>=0)
return "$CHROME";
else
return navigator.userAgent;
};
})();
}

if(!extend_class__){
var extend_class__=(function(){
return function(deriveClass, baseClass) {
var base=new baseClass();
for (var m in base) {
deriveClass.prototype[m]=base[m];
}};
})();
}

if(!addEvent){
var addEvent=(function(){
if (document.addEventListener){
return function (el,type,fn){
if (el&&el.nodeName||el===window){
el.addEventListener(type,fn,false);
}else if(el&&el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}}};
}else{
return function(el,type,fn){
if (el&&el.nodeName||el===window){
el.attachEvent('on'+type,function(){return fn.call(el,window.event);});
}else if(el&&el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}}};
}})();
}

HTML5模板:
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="author" content="cheungmine">
  <title>The HTML5 Test Page</title>
  <!--
  <link rel="stylesheet" href="css/styles.css?v=1.0">
  -->
  <script src="utils.js"></script>
  <!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <script type="text/javascript">
    console.log("run script in head");
    var browser = getBrowserAgent();
    addEvent(window, 'load',
      function () {
        if (browser=="$IE"||browser=="{1}quot;) {
          if (window.confirm("IE does not support HTML5 currently.\n"+
              "please use lastest FireFox, Chrome or Opera!\n"+
              "if you havenot any of them installed,\n"+
              "please click OK to enter download page.")) {
            window.location.replace("selbrowser.html");
          }
          else {
            window.close();
          }
        }

        init();
      }
    );
    
    function init () {
      console.log("init after page load");
    }
  </script>
</head>
<body>
  <header>
    <nav>HTML5/JavaScript 编程规范</nav>
    <p>(open me in Chrome and press F12 to switch debugging)</p>
  </header>
  <div id="main">
  </div><!-- #main -->

  <!-- import js at bottom of body -->
  <script src="h5.js"></script>
  <script type="text/javascript">
    console.log("run script in body");
    var myCls = new MyClass("cheung", "mine");
    myCls.printArgs();
    myCls.initialize(250);
    console.log(myCls.DaysOfYear);
  </script>
</body>
</html>

名称空间:

(function() {
  function cls(id) {
    this.name = id;
  }

  // public interfaces:
  window['MyNamespace']={}
  window['MyNamespace']['MyClass']=cls;
})();

使用:

var myobj = new MyNamespace.MyClass("test");

alert(myobj.name);


分享到:
评论

相关推荐

    JavaScript编程规范编程规范

    JavaScript编程规范旨在提升代码质量和可读性,是开发者遵循的一套约定和最佳实践。以下是根据提供的部分内容解析出的JavaScript编程规范的关键点: 1. **排版** - **规则1**:程序块使用4个空格缩进,不使用TAB,...

    我的HTML5/JavaScript编程规范

    ### 我的HTML5/JavaScript编程规范 #### 一、文本编辑规则 1. **缩进**: 使用2个空格进行缩进,避免使用Tab键。这样可以保持代码的一致性和可读性。 2. **标签**: HTML标签全部采用小写字母书写,例如 `...

    Javascript编程语言的编程规范

    本文主要探讨JavaScript编程规范的关键要素。 #### 二、JavaScript编程规范要点 ##### 2.1 变量声明与使用 - **按需声明**:变量应当按需声明,而不是随意地在代码任何位置出现。 - **作用域管理**:合理利用`let`...

    javascript编程规范

    ### JavaScript编程规范详解 #### 一、引言 在软件开发的过程中,良好的编程规范对于提高代码质量和维护性至关重要。特别是对于广泛使用的JavaScript语言而言,一套严谨的编程规范能够帮助开发者编写出更高质量、...

    Javascript编程规范

    ### JavaScript编程规范详解 #### 1. 介绍 ##### 1.1 为什么要有编码规范 编码规范在软件开发过程中扮演着至关重要的角色。以下是几个关键的原因: - **提高维护效率**:根据软件工程的经验法则,一个软件项目的...

    JavaScript语言编程规范.docx

    JavaScript语言编程规范旨在确保开发团队遵循一致的代码风格,提高代码质量、可读性和可维护性。这份规范涵盖了多个方面,包括文件组织、编码格式、排版规则、命名规范等。 1. **文件组织** - JavaScript代码应当...

    JavaScript的编程规范

    JavaScript编程规范旨在提升代码质量和可读性,是任何专业JavaScript开发者必须遵循的准则。JavaScript作为广泛应用于Web开发的脚本语言,其灵活的语法特点可能导致编码时的随意性,但这也正是编码规范的重要性所在...

    《JavaScript编程精解》.pdf

    文件标题是“《JavaScript编程精解》.pdf”,描述中提到了“JavaScript 编程精解 中文第一版”,而标签同样为“JavaScript 编程精解”。部分内容重复提及了访问“稀酷客”网站的链接,这可能是出版商提供的额外资源...

    JavaScript语言编程规范.pdf

    JavaScript编程规范旨在提升代码质量,确保团队协作时的统一性和可读性,同时减少错误、提高性能和代码的可维护性。以下是对规范的详细解释: 1. **JavaScript文件组织**: - 将JavaScript代码从HTML文件中分离...

    javascript编程宝典源代码

    JavaScript编程宝典是一本深入探讨JavaScript语言的权威指南,涵盖了从基础语法到高级特性,再到实战应用的全方位知识。源代码通常包含书中示例、练习和项目,供读者实践和学习。通过研究这些源代码,我们可以更深入...

    Javascript语言编程规范.docx

    JavaScript编程规范旨在提升代码质量,确保团队协作时的统一性和可读性,同时减少错误、提高性能和维护性。以下是一些关键要点的详细说明: 1. **文件组织与引用** - 将JavaScript代码从HTML文件中分离,存储在...

    JavaScript编程精解 (第一版 带书签) 中文PDF扫描版

    《JavaScript编程精解 (第一版 带书签) 中文PDF扫描版》是一本专注于JavaScript(通常简称为JS)编程语言的书籍,涵盖了ES5(ECMAScript 2016标准)的编程技术。这本书适合那些希望提升前端开发技能的读者,特别是...

    HTML CSS JAVASCRIPT标准教程 实例版_0

    HTML5是当前最广泛使用的版本,增加了许多新的元素和功能,如音频、视频、画布等,使开发者能更方便地创建丰富多样的内容。 CSS(Cascading Style Sheets)则负责网页的样式和布局。通过CSS,你可以控制文本的字体...

    20条学习javascript的编程规范的建议

    在开发javascript应用程序的过程中,遵循一定的编程规范至关重要。编程规范有助于统一编码风格,提高代码的可读性和可维护性。本文将详细介绍20条编程规范,这些规范主要涉及文件管理、变量声明、命名、语句格式、...

    javascript 编程全解

    本书对HTML5、Web API、Node.js及WebSocket等最新的热门技术也作了深入浅出的介绍,并提供了大量实际应用范例。 本书语法说明系统深入、示例代码规范详细,对容易产生问题之处均做了重点说明,不仅适合初学者入门,...

    javascript高级编程.pdf

    JavaScript是一种广泛使用的客户端脚本编程语言,主要用于开发Web应用程序。它能够让开发人员快速创建交互式的网页,并将各种强大的Web对象(如HTML、XML、Javaapplet、flash等)有机结合起来,从而便捷地生成可在...

Global site tag (gtag.js) - Google Analytics