zoukankan      html  css  js  c++  java
  • 前端代码规范(结合自己团队实际需要总结)

    一、一般规范

    1、命名规范

    (1)以英文命名,避免出现拼音命名。

    (2)文件命名全小写,如需要分割以-连接。如:my-filter.js

    (3)css 选择器命名分割以-连接。如:.main-box-header

    2、代码缩进

    1)以TAP为一次缩进。

    3、代码注释

    (1)关键步骤必须写注释。

    (2)不要写你的代码都干了些什么,而要写你的代码为什么要这么写,背后的考量是什么。当然也可以加入所思考问题或是解决方案的链接地址。

    4、代码检查 使用JSLintJSHintjavascript 代码进行检查。

    二、HTML规范

    1、文档类型:使用HTML5文档类型声明。<!DOCTYPE html>

    2、结构(HTML)、表现(CSS)、行为(JS)代码分离.

    HTML文件中只包含标签,将表现放入样式表中,将所有动作行为放入脚本文件中。在HTML<head>中引入样式文件,在</body>之前引入脚本文件。

    3、<meat>声明

    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    
    让网页宽度适应屏幕宽度,多用于移动端。
    
    <meta http-equiv="X-UA-Compatible"content="IE=edge,chrome=1" />
    
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    
    让360浏览器默认进入极速模式

    4、<img> 标签必须添加alt属性。

    在图像无法显示时的替代文本。在网速慢、图片src属性错误、浏览器禁用图片或是屏幕阅读器中alt属性很重要,且利于SEO

    5、ID和锚点

    页面中重要的部分,如:页头、导航、主体、页脚等加上ID

    单选、复选中为<input >ID并在<lable>标签中将for指向此ID

    例如:

    <input  type="checkbox" id="allowTrace" value="manual">
    
    <label for="allowTrace">
    
        允许trace
    
    </label>

    三、CSS规范

    1、Css选择器层级

    错误示范:

    .content_box form ul li {height:30px;margin:10px;}

    错误原因:样式指向不精准,使得受影响的标签范围太大,当多个页面同时引用同一样式表时,容易出现不可预见的问题。

    #final #content .con_border .system_time .default_checkbox {}

    错误原因:选择器太多,权重太高,不利于后期维护。

    .access_control > ul > li > ul > li > input{
        margin-right:10px;
    }

    错误原因:选择器太多,影响运行效率,不利于样式复用。尽量避免使用后代选择器。

    建议:层级尽量不超过三级,防止出现权重太高,不利于后期的覆盖与维护。

    2、!important

    尽量避免使用!important,因为这是css里面的终极大招,用多了伤元气。

    3、合理的避免使用ID选择器。

    一般情况下ID不应被应用于样式表中。因为ID样式不能被复用且每个页面中只能使用一次ID。还有一个原因是ID选择器权重很高。

    4、尽量避免使用元素选择器

    错误示范:

    form ul li em{
    
    }

    推荐写法:

    .content .title{
    
    }

    5、css 书写顺序

    (1)位置属性(position, top, right, z-index, display, float)
    (2)大小(width, height, padding, margin)

    (3)文字系列(font, line-height, letter-spacing, color- text-align)
    (4)背景(background, border)
    (5)其他(animation, transition)

    6、缩写属性

    例如:margin

    margin-top:1px;
    
    margin-right:2px;
    
    margin-bottom:3px;
    
    margin-left:4px;

     简写:

    margin:1px 2px 3px 4px;

    例如:背景

    background-image:url(background.gif);
    
    background-repeat:no-repeat;
    
    background-attachment:fixed;
    
    background-position:0 0;

    缩写:

    background:#f00 url(background.gif) no-repeat fixed 0 0;

    7、颜色值使用小写的十六进制数字

    不推荐:

    color:#FF22AA;

    推荐:

    color:#f2a;

    四、JAVASCRIPT规范

    1、变量命名:驼峰命名法

    例如:userName,passWorld;

    2、===== 

    总是使用 === 精确的比较操作符,避免在判断的过程中,由 JavaScript 的强制类型转换所造成的困扰。

    如果你使用 === 操作符,那比较的双方必须是同一类型为前提的条件下才会有效。 在只使用 == 的情况下,JavaScript 所带来的强制类型转换使得判断结果跟踪变得复杂。

    3、变量声明

    使用 var 来声明变量。原则上不建议使用全局变量如不指定 var,变量将被隐式地声明为全局变量,这将对变量难以控制。如果没有声明,变量处于什么定义域就变得不清(可以是在 Document Window 中,也可以很容易地进入本地定义域)。所以,请总是使用 var 来声明变量。

    4、全局污染

    除了使用var声明变量外,还可以使用匿名函数包裹代码防止全局命名空间被污染。

    (function(){
    
         // Code goes here
    
    }());
    
    (function(log, w, undefined){
    var x = 10, y = 100;
    log((w.x
    === undefined) + ' ' + (w.y === undefined)); }(window.console.log, window));

    5、eval 函数(魔鬼)

    eval() 不但混淆语境还很危险,总会有比这更好、更清晰、更安全的另一种方案来写你的代码,因此尽量不要使用 evil 函数。

    6、字符串拼接

      按一定长度截断字符串,并使用 + 运算符进行连接。分隔字符串尽量按语义进行,如不要在一个完整的名词中间断开。特别的,对于 HTML 片段的拼接,通过缩进,保持和 HTML 相同的结构。

    var html = ''
    
        + '<article>'
    
        +     '<h1>Title here</h1>'
    
        +     '<p>This is a paragraph</p>'
    
        +     '<footer>Complete</footer>'
    
        + '</article>';
    
    var html = [
    
        '<article>',
    
            '<h1>Title here</h1>',
    
            '<p>This is a paragraph</p>',
    
            '<footer>Complete</footer>',
    
        '</article>'
    
    ];
    
    html = html.join('');

    7、对有序集合进行遍历时,缓存length

    虽然现代浏览器都对数组长度进行了缓存,但对于一些宿主对象和老旧浏览器的数组对象,在每次 length 访问时会动态计算元素个数,此时缓存 length 能有效提高程序性能。

    for (var i = 0, len = elements.length; i < len; i++) {
     
        var element = elements[i]; 
        // ...... 
    }

     注:本文引用《前端代码基础编写规范》v1.1

      参考百度前端JavaScript编码规范https://github.com/ecomfe/spec/blob/master/javascript-style-guide.md

     

  • 相关阅读:
    mysql数据库汉字首字母简拼全拼
    window.showModalDialog刷新父窗口和本窗口的方法及注意
    c#.net语句e.Row.RowType == DataControlRowType.DataRow是什么含义?
    SQL 拿到一天内的数据
    在线脚本编辑器
    输入正确的邮箱地址
    jquery中的$(document).ready()方法和window.onload方法区别
    转载从XML文件中读取数据绑定到DropDownList
    GridView中DropDownList联动
    For 循环 和Foreach 的区别
  • 原文地址:https://www.cnblogs.com/daijinxue/p/6844797.html
Copyright © 2011-2022 走看看