整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript 代码规范

JavaScript 代码规范

所有的 JavaScript 项目适用同一种规范。

JavaScript 代码规范

代码规范通常包括以下几个方面:

  • 变量和函数的命名规则

  • 空格,缩进,注释的使用规则。

  • 其他常用规范……

规范的代码可以更易于阅读与维护。

代码规范一般在开发前规定,可以跟你的团队成员来协商设置。

变量名

变量名推荐使用驼峰法来命名(camelCase):

firstName="John";

lastName="Doe";

price=19.90;

tax=0.20;

fullPrice=price + (price * tax);

空格与运算符

通常运算符 (=+ - * / ) 前后需要添加空格:

实例:

var x=y + z;

var values=["Volvo", "Saab", "Fiat"];

代码缩进

通常使用 4 个空格符号来缩进代码块:

函数:

function toCelsius(fahrenheit) {

return (5 / 9) * (fahrenheit - 32);

}

不推荐使用 TAB 键来缩进,因为不同编辑器 TAB 键的解析不一样。

语句规则

简单语句的通用规则:

  • 一条语句通常以符号作为结束符。

实例:

var values=["Volvo", "Saab", "Fiat"];

var person={

firstName: "John",

lastName: "Doe",

age: 50,

eyeColor: "blue"

};

复杂语句的通用规则:

  • 将左花括号放在第一行的结尾。

  • 左花括号前添加一空格。

  • 将右花括号独立放在一行。

  • 不要以分号结束一个复杂的声明。

函数:

function toCelsius(fahrenheit) {

return (5 / 9) * (fahrenheit - 32);

}

循环:

for (i=0; i < 5; i++) {

x +=i;

}

条件语句:

if (time < 20) {

greeting="Good day";

} else {

greeting="Good evening";

}

对象规则

对象定义的规则:

  • 将左花括号与类名放在同一行。

  • 冒号与属性值间有个空格。

  • 字符串使用双引号,数字不需要。

  • 最后一个属性-值对后面不要添加逗号。

  • 将右花括号独立放在一行,并以符号作为结束符号。

实例:

var person={

firstName: "John",

lastName: "Doe",

age: 50,

eyeColor: "blue"

};

短的对象代码可以直接写成一行:

实例:

var person={firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

每行代码字符小于 80

为了便于阅读每行字符建议小于数 80 个。

如果一个 JavaScript 语句超过了 80 个字符,建议在 运算符或者逗号后换行。

实例:

document.getElementById("demo").innerHTML=

"Hello Runoob.";

命名规则

一般很多代码语言的命名规则都是类似的,例如:

  • 变量和函数为驼峰法( camelCase

  • 全局变量为大写 (UPPERCASE )

  • 常量 (如 PI) 为大写 (UPPERCASE )

变量命名你是否使用这几种规则: hyp-hens, camelCase, 或 under_scores ?

HTML 和 CSS 的横杆(-)字符:

HTML5 属性可以以 data- (如:data-quantity, data-price) 作为前缀。

CSS 使用 - 来连接属性名 (font-size)。

- 通常在 JavaScript 中被认为是减法,所以不允许使用。

下划线:

很多程序员比较喜欢使用下划线(如:date_of_birth), 特别是在 SQL 数据库中。

PHP 语言通常都使用下划线。

帕斯卡拼写法(PascalCase):

帕斯卡拼写法(PascalCase) 在 C 语言中语言较多。

驼峰法:

JavaScript 中通常推荐使用驼峰法,jQuery 及其他 JavaScript 库都使用驼峰法。

变量名不要以 $ 作为开始标记,会与很多 JavaScript 库冲突。

HTML 载入外部 JavaScript 文件

使用简洁的格式载入 JavaScript 文件 ( type 属性不是必须的):

<script src="myscript.js">

使用 JavaScript 访问 HTML 元素

一个糟糕的 HTML 格式可能会导致 JavaScript 执行错误。

以下两个 JavaScript 语句会输出不同结果:

实例

var obj=getElementById("Demo")

var obj=getElementById("demo")

HTML 与 JavaScript 尽量使用相同的命名规则。

访问 HTML(5) 代码规范。

文件扩展名

HTML 文件后缀可以是 .html (或r .htm)。

CSS 文件后缀是 .css

JavaScript 文件后缀是 .js

使用小写文件名

大多 Web 服务器 (Apache, Unix) 对大小写敏感: london.jpg 不能通过 London.jpg 访问。

其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感: london.jpg 可以通过 London.jpg 或 london.jpg 访问。

你必须保持统一的风格,我们建议统一使用小写的文件名。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

. PSR是什么?

PSR是一套代码编写规范,用于约束代码风格。以前没有规范的时候大家都是按照自己的习惯来书写代码,但每个人风格不一样,你的代码在别人看来就是很不爽。而且会导致许多问题:
function 函数名是否驼峰命名,
花括号{}是否换行写,
是该写注释呢还是不写
变量名是大写还是小写,
一个php文件中是一个类好还是允许有多个
所以PSR-[0-4]规范就应运而生,大家都共同遵守,就没有风格差异了。
PSR是由PHP-FIG这个组织发明的,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写。PSR是Proposing a Standards Recommendation(提出标准建议)的缩写。截止到目前为止,总共有5套PSR规范,分别是:

PSR-0 (Autoloading Standard) 自动加载标准
PSR-1 (Basic Coding Standard) 基础编码标准
PSR-2 (Coding Style Guide) 编码风格向导
PSR-3 (Logger Interface) 日志接口
PSR-4 (Improved Autoloading) 自动加载的增强版,可以替换掉PSR-0了。

2. 规范的使用和定义

1. PSR-0规范

PSR-0是第一套规范,主要用于规范自动加载,不过现在已经过时了,被PSR-4规范替代了。
PSR-0强制性要求几点:

1. 一个完全合格的namespace和class必须符合这样的结构:“\< Vendor Name>(< Namespace>)*< Class Name>”
2. 每个namespace必须有一个顶层的namespace("Vendor Name"提供者名字)
3. 每个namespace可以有多个子namespace
4. 当从文件系统中加载时,每个namespace的分隔符(\)要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)
5. 在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。在namespace中,下划线(_)符号是没有(特殊)意义的。
6. 当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的
7. verdor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)

第一条: 一个完全合格的namespace和class必须符合这样的结构:“\< Vendor Name>(< Namespace>)*< Class Name>”

假如我的文件路径为Lib/Driver/Config.php,那么我的namespace的申明和使用为:

申明:namespace \Lib\Driver;
使用:use \Lib\Driver\Config;

第二三条:每个namespace必须有一个顶层的namespace(”Vendor Name”提供者名字),每个namespace可以有多个子namespace

namespace \Lib\Driver\Config->/path/to/vender/Lib/Driver/Config.php

Lib就是顶层namespace,Driver就是子namespace/

第四条:当从文件系统中加载时,每个namespace的分隔符()要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)

new \Lib\Driver\Config->转换的目录为/Lib/Driver/Config.php,替换反斜杠为目录分隔符

第五条:在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。在namespace中,下划线(_)符号是没有(特殊)意义的

\Lib\Driver\Class_Name->转换为目录为/Lib/Driver/Class/Name.php
\Lib\Package_Name\Class_Name->转换为目录为/Lib/Package_Name/Class/Name.php

目录中的_就是下划线,classname中的下划线实际上会转为成路径分隔符。

但这个规定在PSR-4中已经取消了,不再需要转换了。

第六条:当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的

加载的文件必须是.php结尾,既然使用php当然是.php结尾了。不再像以前那样有什么php3,php5

第七条:verdor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)

由于Liunx是区分大小写的,而windows是不区分大小写的,所以如果不注意大小写在win下正常开发,但是到了服务器上可能就无法正常执行了。

2. PSR-1规范

要求:

1. PHP源文件必须只使用 <?php 和 <?=这两种标签。
2. 源文件中php代码的编码格式必须是不带字节顺序标记(BOM)的UTF-8。
3. 一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。
4. 命名空间(namespace)和类(class) 必须遵守PSR-0标准。
5. 类名(class name) 必须使用骆驼式(StudlyCaps)写法 (注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。
6. 类(class)中的常量必须只由大写字母和下划线(_)组成。
7. 方法名(method name) 必须使用驼峰式(cameCase)写法。

第一条: PHP源文件必须只使用 <?php 和 <?=这两种标签

因为php有4种标签形式,所以这里规定了使用哪一种,统一规范。

第二条:源文件中php代码的编码格式必须是不带字节顺序标记(BOM)的UTF-8

windows笔记本默认是会在文件头部加入BOM头的,会导致在服务器上输出得很奇怪。
国内的中文编码是GBK,UTF-8是国际通用编码,不统一的话也会导致乱码。

第三条:一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。

不要在一个文件中又是定义函数又是修改系统配置的,一个文件只做一件事。

// 副作用:修改了ini配置
ini_set('error_reporting', E_ALL);
// 副作用:载入了文件
include "file.php";
// 副作用:产生了输出
echo "<html>\n";
// 声明 function
function foo()
{
    // 函数体
}

分开写

// 声明 function
function foo()
{
    // 函数体
}
// 副作用:修改了ini配置
ini_set('error_reporting', E_ALL);
// 副作用:载入了文件
include "file.php";

这样就很整齐。

第四条:命名空间(namespace)和类(class) 必须遵守PSR-0标准

参见PSR-0标准

第五条:类名(class name) 必须使用骆驼式(StudlyCaps)写法 (注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。

类名必须使用驼峰命名,大驼峰小驼峰都可以。

<?php
class BigHouse{
}

第六条:类(class)中的常量必须只由大写字母和下划线(_)组成。

<?php
class Test{
    const USER_INFO='xx';
    const NAME='xx';
}

第七条:方法名(method name) 必须使用驼峰式(cameCase)写法。

<?php
class Test{
    public function getUserInfo(){}
}

总结:虽然规范里没有规定使用大驼峰还是小驼峰,不过我的开发习惯是class name大驼峰,method name小驼峰

3. PSR-2 规范

PSR-2用于约束代码风格,代码必须遵循PSR-1 中列出的所有规则。

1. 源文件

  1. 文件末尾必须空一行。
  2. 必须使用Unix LF(换行)作为行结束符。
  3. 纯PHP代码源文件的关闭标签?>必须省略。

2. 行

  1. 行长不得有硬性限制。
  2. 行长度的软限制必须是 120 个字符;自动样式检查器必须警告但不能在软限制处出错。
  3. 行不应超过 80 个字符;超过此长度的行应拆分为多行,每行不超过 80 个字符。
  4. 非空行的末尾不得有尾随空格。
  5. 可以添加空行以提高可读性并指示相关的代码块。
  6. 每行不得超过一个语句。

3. 缩进

代码必须使用 4 个空格的缩进,并且不得使用制表符进行缩进。现代编辑器都可以设置。

注意:仅使用空格,而不是将空格与制表符混合使用,有助于避免差异、补丁、历史记录和注释方面的问题。空格的使用还可以轻松插入细粒度的子缩进以进行行间对齐。

4. 关键字和 True/False/Null

  1. PHP关键字必须小写。
  2. PHP 常量true、false和null必须小写。

5. 命名空间的使用和声明

  1. 命名空间(namespace)的声明后面必须有一行空行。
  2. 所有的导入(use)声明必须放在命名空间(namespace)声明的下面。
  3. 一句声明中,必须只有一个导入(use)关键字。
  4. 在导入(use)声明代码块后面必须有一行空行。
<?php
namespace Vendor\Package;//下面必须空一行

use FooClass;//use放在namespace下面
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;//use下面也要空一行

// ... additional PHP code ...

6. 类、属性和方法

  1. 继承(extends) 和实现(implement) 必须和 class name 写在一行,切花括号要换行写。
<?php
namespace Vendor\Package;

use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

//写在一行
class ClassName extends ParentClass implements \ArrayAccess, \Countable
{//花括号换行写
    // constants, properties, methods
}

implements有多个时可以写成多行,但要保证第一个必须在下一行。每行只能写一个接口,每行都要缩进。

<?php
namespace Vendor\Package;

use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

class ClassName extends ParentClass implements
    \ArrayAccess,//第一个接口就要写在下一行,注意缩进
    \Countable,
    \Serializable
{
    // constants, properties, methods
}
  1. 属性必须声明可见性,public还是private还是protected,不能省略。也不能使用var, var是php老版本中的什么方式,等用于public。属性名称不应以单个下划线为前缀来表示受保护或私有可见性。每个语句不能声明多个属性。
<?php
namespace Vendor\Package;

class ClassName
{
    public $foo=null;
}
  1. 方法(method) ,必须 声明其可见性,到底是 public 还是protected还是 private,不能省略。并且,花括号{必须换行写。如果有多个参数,第一个参数后紧接, 再加个空格,如果参数有默认值,也要用左右空格分开。
<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz($arg1, &$arg2, $arg3=[])
    {
        // method body
    }
}

参数列表可以分成多行,和接口多行一样需要缩进。参数多行时做花括号不用换行写,但是要在右括号后空一格。如下:

<?php
namespace Vendor\Package;

class ClassName
{
    public function aVeryLongMethodName(
        ClassTypeHint $arg1,
        &$arg2,
        array $arg3=[]
    ) {
        // method body
    }
}
  1. 当用到抽象(abstract)和终结(final)来做类声明时,它们必须放在可见性声明 (public 还是protected还是 private)的前面。而当用到静态(static)来做类声明时,则必须放在可见性声明的后面。
<?php
namespace Vendor\Package;

abstract class ClassName
{
    protected static $foo; //static修饰符放到可见性声明后面

    abstract protected function zim();//abstract 放到前面

    final public static function bar()//final放到前面
    {
        // method body
    }
}
  1. 函数调用时,函数名称与左括号之间不得有空格,左括号后不得有空格,右括号前不得有空格。在参数列表中,每个逗号前不得有空格,每个逗号后必须有一个空格。参数列表可以分成多行,其中每个后续行缩进一次。这样做时,列表中的第一项必须在下一行,并且每行必须只有一个参数。
<?php
bar();
$foo->bar($arg1);
Foo::bar($arg2, $arg3);
$foo->bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);

7. 控制结构

  1. 控制结构就是if,switch这种流程控制。一般规则如下:
  2. 控制结构关键字后必须有一个空格
  3. 左括号后不能有空格
  4. 右括号前不能有空格
  5. 右括号和左大括号之间必须有一个空格
  6. 结构体必须缩进一次
  7. 右大括号必须在正文之后的下一行

1. if,elseif,else写法:

<?php
if ($expr1) {
    // if body
} elseif ($expr2) {
    // elseif body
} else {
    // else body;
}

elseif应该连着写 不要写成else if,要看着像一个单词。

2. switch,case写法:

<?php
switch ($expr) {//括号前后都要有空格
    case 0:
        echo 'First case, with a break';
        break;//break要和上一行对齐
    case 1:
        echo 'Second case, which falls through';
        //没有break语句的要写注释no break
        // no break
    case 2:
    case 3:
    case 4:
        echo 'Third case, return instead of break';
        return;
    default:
        echo 'Default case';
        break;
}

3. while,do while

<?php
while ($expr) {
    // structure body
}

do {
    // structure body;
} while ($expr);

4. for,foreach

<?php
for ($i=0; $i < 10; $i++) {
    // for body
}

foreach ($iterable as $key=> $value) {
    // foreach body
}

5. try,catch

<?php
try {
    // try body
} catch (FirstExceptionType $e) {
    // catch body
} catch (OtherExceptionType $e) {
    // catch body
}

8.闭包

  1. 闭包必须在function关键字后用空格声明,关键字前后用空格声明use
  2. 左大括号必须在同一行上,右大括号必须在正文之后的下一行。
  3. 参数列表或变量列表的左括号后不得有空格,参数列表或变量列表的右括号前不得有空格。
  4. 在参数列表和变量列表中,每个逗号前不能有一个空格,每个逗号后必须有一个空格。
  5. 具有默认值的闭包参数必须放在参数列表的末尾。
  6. 参数列表和变量列表可以分成多行,其中每个后续行缩进一次。这样做时,列表中的第一项必须在下一行,并且每行必须只有一个参数或变量
  7. 当输入的参数列表(无论是参数还是use的变量)被分成多行时,右括号和左括号必须放在它们自己的一行上,它们之间有一个空格。
  8. 请注意,当该函数或方法直接将闭包用作参数时,格式化规则也适用。
<?php
$closureWithArgs=function ($arg1, $arg2) {
    // body
};

$closureWithArgsAndVars=function ($arg1, $arg2) use ($var1, $var2) {
    // body
};


//参数列表格式化
$longArgs_noVars=function (
    $longArgument,
    $longerArgument,
    $muchLongerArgument
) {
    // body
};

$noArgs_longVars=function () use (
    $longVar1,
    $longerVar2,
    $muchLongerVar3
) {
    // body
};

$longArgs_longVars=function (
    $longArgument,
    $longerArgument,
    $muchLongerArgument
) use (
    $longVar1,
    $longerVar2,
    $muchLongerVar3
) {
    // body
};

$longArgs_shortVars=function (
    $longArgument,
    $longerArgument,
    $muchLongerArgument
) use ($var1) {
    // body
};

$shortArgs_longVars=function ($arg) use (
    $longVar1,
    $longerVar2,
    $muchLongerVar3
) {
    // body
};

//闭包作为参数传入
$foo->bar(
    $arg1,
    function ($arg2) use ($var1) {
        // body
    },
    $arg3
);

4. PSR-3规范

PSR-3规范是日志库的通用接口,一般框架都帮我们做好了,了解即可。官网文档

5. PSR-4规范

PSR-4也是自动加载规范,用来取代PSR-0的。

  1. 废除了PSR-0中就是目录分割符的写法,下划线在完全限定类名中是没有特殊含义了。
  2. 类文件名要以 .php 结尾。
  3. 类名必须要和对应的文件名要一模一样,大小写也要一模一样。

总结:

psr-0,psr-4是自动加载规范,psr-1,psr-2是代码风格规范,psr-3是日志库接口。
平常工作中尽量使用psr-1,psr-2规范来规范我们的代码风格。

页制作概述

  • HTML是WEB页面的描述性语言
  • CSS则是为HTML制定样式的机制
  • JavaScript是具有交互性Web设计最佳选择
  • CSS和JavaScript 是都可以独立编写的文本文件,还有PHP都可以嵌入在HTML中应用

HTML基础

  • HTML(Hypertext Marked Language)
  • 文件的后缀名.html 或 .htm
  • Hypertext可以在文件中标识图片、链接、表格、文本等。
  • Marked <或>以及字符串组成 <img><p></p>
  • 是一种编程语言
  • 浏览器解释的语言

CSS基础

  • CSS (Cascading style sheets)
  • 是一种用来表现HTML样式的语言
  • 它不能独立使用,没有HTML就没有CSS
  • 定义网页的外观和布局(字体、背景、文本、位置、边缘、列表及其它)
  • 也是用浏览器解释的语言

HTML语法

  • 元素:是一整体,是一对象
  • <标记名> </标记名> 成对的标记,也称为容器
  • 标记中可以嵌套其它的标记
  • <br /> <hr />
  • <a href=“www.xsphp”><b>地址</b></a>
  • 使用标记来描述元素的
  • HTML文档就是由元素和标记组成的文件

HTML语法(二)

  • HTML标签属性
  • <tag> content</tag>
  • <tag><tag2>content</tag2></tag>
  • <tag />
  • <tag pro=“value” pro2=“value2”>
  • content
  • </tag>
  • 属性:在标记中使用 [属性=属性值]
  • 多个属性使用空格分开
  • 属性的值(不管什么类型)可以使用单引号、双引号、不加引号(使用双引号)
  • <font color=“red” size=“7”>
  • 属性是对标记功能的扩展或形为的修饰,每个属性几乎都是可选。

HTML语法(三)

  • HTML标记和属性名都是不区分大小写的
  • HTML文档注释 <!-- 注释内容 -->
  • 在注释中不能再有注释
  • 在注释掉的标记之后,要保证还是一个结构完好的文档

HTML语法(四)

  • HTML的代码格式
  • 任何回车或空格在源代码中都不起作用
  • 使用回车或空格进行代码排版

HTML语法(五)

  • HTML字符实体
  • 三部分:
  • 以&开头
  • 一个实体名或是使用#号和一个体编号
  • 以分号;结束
  • < < <
  • > > >

HTML语法(六)

  • HTML颜色的设置
  • 设置颜色时可以是一个关键字或RGB的数字格式
  • White black blue ,gray green, red yellow
  • #FF (0-255)
  • #FF00BB(rgb) red green blue