前端编码规范之HTML规范

通用规范

  • 省略 图片、样式、脚本以及其他媒体文件 URL 的协议部分(http:,https:),除非文件在两种协议下都不可用。

    这种方案称为 protocol-relative URL,好处是无论你是使用 HTTPS 还是 HTTP,访问页面,浏览器都会以相同的协议请求页面中的资源,同时可以节省一部分字节。

    – Example –

    -html
    <!-- 不推荐 -->
    <script src="https://example.com/example.js"></script>
    
    <!-- 推荐 -->
    <script src="//example.com/example.js"></script>
    
    -css
    /* 不推荐 */
    .example {
      background: url("https://example.com/example.png");
    }
    
    /* 推荐 */
    .example {
      background: url("//example.com/example.png");
    }
    

HTML规范

  • HTML文件、文件夹名称规范

    • 使用小写英文、-、_(-不能开头)组合成文件名、文件夹名。

      大多 Web 服务器 (Apache, Unix) 对大小写敏感: london.jpg 不能通过 London.jpg 访问。
      其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感: london.jpg 可以通过 London.jpg 或 london.jpg 访问。
      你必须保持统一的风格,建议统一使用小写的文件名。

  • HTML文件后缀规范

    • 统一使用.html为文件后缀。
  • HTML 格式规范

    • 属性值用双引号。

      – Example –

      -html
      <!-- 不推荐 -->
      <a href='/'>Home</a>
      
      <!-- 推荐 -->
      <a href="/" alt="Home" title="Home">Home</a>
      
    • 属性等号前后禁止使用空格。

      – Example –

      -html
      <!-- 不推荐 -->
      <a href = '/'>Home</a>
      
      <!-- 推荐 -->
      <a href="/" alt="Home" title="Home">Home</a>
      
  • 缩进

    • 用两个空格来代替制表符(tab) – 这是唯一能保证在所有环境下获得一致展现的方法。(包含HTML和css)
    • 嵌套元素应当缩进一次(即两个空格)。
    • 对于属性的定义,确保全部使用双引号,绝不要使用单引号。
    • 不要在自闭合(self-closing)元素的尾部添加斜线 – HTML5 规范中明确说明这是可选的(例如:<br><img>)。
    • 不要省略可选的结束标签(closing tag)(例如,</li></body>)。
  • 大小写

    以下都应该用小写:

    HTML:元素名称,属性,属性值(除非 text/CDATA);
    CSS:选择器,属性,属性值

    – Example –

    -html
    <!-- 不推荐 -->
    <A HREF="/">Home</A>
    
    <!-- 推荐 -->
    <img src="google.png" alt="Google">
    
    -css
    /* 不推荐 */
    color: #E5E5E5;
    
    /* 推荐 */
    color: #e5e5e5;
    
  • 文档类型

    为每个 HTML 页面的第一行添加标准模式(standard mode)的声明。

    这样能够确保在每个浏览器中拥有一致的展现。

    – Example –

    -html
    <!DOCTYPE html>
    <html>
      <head></head>
    </html>
    
  • 语言属性

    强烈建议为 html 根元素指定 lang 属性,从而为文档设置正确的语言。

    这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等等。
    语言代码表

    – Example –

    -html
    <html lang="zh-CN">
      <!-- ... -->
    </html>
    
  • HTML 正确性

    尽可能使用正确的 HTML。

    正确闭合标签且必须闭合;
    遵循xhtml strict标准来嵌套标签(如:内联元素不能包含块级元素等等)。

    – Example –

    -html
    <!-- 不推荐 -->
    <div>Test</div>
    <article>This is only a test.
    
    <!-- 推荐 -->
    <!DOCTYPE html>
    <meta charset="utf-8">
    <div>Test</div>
    <article>This is only a test.</article>
    
  • 语义化

    • 为什么要语义化?

      • 代码结构: 使页面没有css的情况下,也能够呈现出很好的内容结构
      • 有利于SEO: 爬虫依赖标签来确定关键字的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息
      • 提升用户体验: 例如title、alt可以用于解释名称或者解释图片信息,以及label标签的灵活运用。
      • 便于团队开发和维护: 语义化使得代码更具有可读性,让其他开发人员更加理解你的html结构,减少差异化。
      • 方便其他设备解析: 如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染网页。
    • HTML5常用的语义元素
      常用的语义元素说明
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79vq1XeH-1628837059890)(assets/html/semantic.jpg)]

    • 实用为王

      尽量遵循 HTML 标准和语义,但是不要以牺牲实用性为代价。任何时候都要尽量使用最少的标签并保持最小的复杂度。

  • IE 兼容模式

    IE 支持通过特定的 <meta> 标签来确定绘制当前页面所应该采用的 IE 版本。

    – Example –

    -html
    <!-- 通知 IE 采用其所支持的最新的模式 -->
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    
  • 字符编码

    通过明确声明字符编码,能够确保浏览器快速并容易的判断页面内容的渲染方式

    – Example –

    -html
    <head>
      <!-- 声明编码格式为UTF-8 -->
      <meta charset="UTF-8">
    </head>
    
  • 多媒体元素降级

    对于像图片、视频、canvas 动画等多媒体元素,确保提供其他可访问的内容。图片可以使用替代文本(alt),视频和音频可以使用文字版本。

    – Example –

    -html
      <!-- 不推荐 -->
      <img src="example.png">
    
      <!-- 推荐 -->
      <img src="example.png" alt="example">
    
  • 实体引用

    如果团队中文件和编辑器使用同样的编码方式,就没必要使用实体引用。除了一些在 HTML 中有特殊含义的字符(如 < 和 &)以及不可见的字符(如空格)。

    – Example –

    -html
    <!-- 不推荐 -->
    欧元的货币符号是&ldquo;&eur;&rdquo;
    
    <!-- 推荐 -->
    欧元的货币符号是“€”
    
  • type 属性

    在引用样式表和脚本时,不要指定 type 属性,除非不是 CSS 或 JavaScript。

    因为 HTML5 中已经默认指定样式变的 type 是 text/css,脚本的type 是 text/javascript。

    – Example –

    -html
    <!-- 不推荐 -->
    <link rel="stylesheet" href="//example.com/example.css" type="text/css">
    <script src="//example/example.js" type="text/javascript"></script>
    <!-- 推荐 -->
    <link rel="stylesheet" href="//example.com/example.css">
    <script src="//example/example.js"></script>
    
  • 关注分离

    标记、样式和脚本分离,确保相互耦合最小化。

  • 属性顺序

    HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。

    • class
    • id, name
    • data-*
    • src, for, type, href
    • title, alt
    • aria-*, role(aria与role都是HTML5针对html tag增加的属性,一般是为不方便的人士提供的功能,比如屏幕阅读器

    – Example –

    -html
    <a class="..." id="..." data-modal="toggle" href="#">Example link</a>
    
    <input class="form-control" type="text">
    
    <img src="..." alt="...">
    
  • 布尔(boolean)型属性

    • 布尔型属性可以在声明时不赋值。

      元素的布尔型属性如果有值,就是 true,如果没有值,就是 false。

      – Example –

      -html
      <input type="text" disabled>
      
      <input type="checkbox" value="1" checked>
      
      <select>
        <option value="1" selected>1</option>
      </select>
      
  • 减少标签的数量

    • 尽量避免多余的父元素嵌套。
  • JavaScript 生成的标签

    • 能避免时尽量避免使用javaScript生成标签。

      通过 JavaScript 生成的标签让内容变得不易查找、编辑,并且降低性能。

  • 注释

    • 说明文案的注释方法

      • 必须)注释文案两头空格。

        -html
        <!-- 注释内容 -->
        
      • 强烈建议)只有开始注释。

        和下一模块必须空行隔开

        – Example –

        -html
        <!-- 导航 -->
        <ul class="m-nav">
          <li><a href="#">NAV1</a></li>
          <li><a href="#">NAV2</a></li>
        </ul>
        
        <div class="m-content">
          content
        </div>
        
      • 建议)采用类似标签闭合的写法,与HTML统一格式。

        开始注释: (文案两头空格)
        结束注释: (文案前加“/”符号,类似标签的闭合)。

        – Example –

        -html
        <!-- 导航 -->
        <ul class="m-nav">
          <li><a href="#">NAV1</a></li>
          <li><a href="#">NAV2</a></li>
        </ul>
        <!-- /导航 -->
        
    • 代码本身的注释方法

      • 单行代码的注释。

        – Example –

        -html
        <!-- <div class="m-content">content</div> -->
        
      • 多行代码的注释。

        起始和结尾都另起一行并左缩进对齐。

        – Example –

        -html
        <!-- 不推荐 -->
        <!-- <ul class="m-nav">
          <li><a href="#">NAV1</a></li>
          <li><a href="#">NAV2</a></li>
        </ul> -->
        
        <!-- 推荐 -->
        <!--
        <ul class="m-nav">
          <li><a href="#">NAV1</a></li>
          <li><a href="#">NAV2</a></li>
        </ul>
        -->
        
    • 任务项

      • 用 TODO 来标记待办事项。

      完成后必须删除。
      VSCode可下载TODO Highlight(TODO高亮)、Todo Tree(TODO树)两个扩展插件

      ***-- Example --***
      ```html
      -html
      <!-- TODO: 未写当前导航样式 -->
      <ul class="m-nav">
          <li><a href="#">NAV1</a></li>
          <li><a href="#">NAV2</a></li>
      </ul>
      ```
      
  • 结构顺序和视觉顺序基本保持一致

    • 按照从上至下、从左到右的视觉顺序书写HTML结构。
    • 有时候为了便于搜索引擎抓取,我们也会将重要内容在HTML结构顺序上提前。
    • 用div代替table布局,可以使HTML更具灵活性,也方便利用CSS控制。
    • table不建议用于布局,但表现具有明显表格形式的数据,table还是首选。
  • 保持良好的简洁的树形结构

    • 每一个块级元素都另起一行,每一行都使用Tab缩进对齐(head和body的子元素不需要缩进)。删除冗余的行尾的空格。

    • 对于内容较为简单的元素,建议使用单行。

    • 建议在大的模块之间用空行隔开,使模块更清晰。

      – Example –

      -html
      <body>
      <!-- 侧栏内容区 -->
      <div class="m-side">
        <div class="side">
          <div class="sidein">
            <!-- 热门标签 -->
            <div class="sideblk">
              <div class="m-hd3"><h3 class="tit">热门标签</h3> </div>
              ...
            </div>
      
            <!-- 最热TOP5 -->
            <div class="sideblk">
              <div class="m-hd3">
                <h3 class="tit">最热TOP5</h3>
                <a href="#" class="s-fc02 f-fr">更多»</a>
              </div>
              ...
            </div>
          </div>
        </div>
      </div>
      <!-- /侧栏内容区 -->
      
      <!-- 主体内容 -->
      <div class="m-content">
        主体内容
      </div>
      </body>
      
  • 关于SEO

    • 页面必须有title标签,元数据的keywords、description数据,且数据恰当。

    • a标签必须含有title属性,且数据恰当。

    • a标签尽量使用href进行跳转,避免使用JavaScript跳转。

    • img标签必须含有alt、title属性,且数据恰当。

    • 针对首页不重要的入口链接都加nofollow屏蔽。
      – Example –

      -html
      <a href="login.html" rel="nofollow">登录</a>
      
    • 有翻页的页面,用canonical 有利于页面集权。
      – Example –

      -html
      <head>
        <link rel="canonical" href="栏目页有多个翻页为第一页链接,内页为当前页链接" />
      <head>
      
    • 注意h、strong标签的使用和数量。

      h1标签只能出现一次,它是当前页面的主标题,对蜘蛛的吸引力是最强的。
      strong标签对关键词的强调作用仅次于h标签,用于加粗段落标题或是重点关键词。

  • 关于代码长度

    • 避免一行代码过长,每行代码尽量少于 80 个字符。

      – Example –

      -html
      <!-- 推荐 -->
      <a href="http://www.example.com" title="栏目页有多个翻页为第一页链接,内页为当前页链接" 
      alt="栏目页有多个翻页为第一页链接,内页为当前页链接">链接</a>
      
  • 关于空行

    • 不要无缘无故添加空行。
    • 为每个逻辑功能块添加空行,这样更易于阅读。
    • 比较短的代码间不要使用不必要的空行和缩进。
  • 关于IE

    • 仅对IE生效.
      – Example –
      -html
      <!-- IE6及以下生效,[if lte IE 7]表示IE7及以下生效 -->
      <!--[if lt IE 7]> 
      <link rel="stylesheet" type="text/css" media="screen" href="path/to/ie.css" /> 
      <![endif]--> 
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好,很高兴能为您服务。关于前端安全编码规范的生成,我已经按照您的要求进行了处理。以下是一篇前端安全编码规范的示例: 前端安全编码规范 1. 禁止使用 eval() 函数和 Function() 构造函数 eval() 函数和 Function() 构造函数可以动态地执行字符串代码,造成安全隐患,因此禁止在前端代码中使用这些函数。 2. 禁止使用 innerHTML 属性 innerHTML 属性可以在前端直接修改 HTML 元素的内容,容易受到 XSS 攻击,因此尽量避免使用 innerHTML 属性。 3. 对用户输入进行过滤和转义 用户输入的数据是前端代码中最容易受到攻击的部分,因此对其进行过滤和转义是非常必要的。可使用相关函数或框架进行处理,如 encodeURIComponent() 函数、jQuery 的 text() 和 html() 函数等。 4. 不要在前端存储敏感信息 前端代码可以很容易地被查看和修改,因此不要将敏感信息存储在前端。如用户的密码和银行卡信息等应该在后端进行存储和加密处理。 5. 使用 HTTPS 协议传输数据 使用 HTTPS 协议传输数据可以有效地防止数据被劫持和篡改,因此建议在前端代码中使用 HTTPS 协议。 6. 不信任任何数据 在前端代码中不要信任任何数据,特别是从客户端获取的数据。如用户的 ID 等信息应该在每次请求时进行验证和授权处理。 以上仅是一些前端安全编码规范的示例,具体的规范应该根据具体的应用场景和需求进行制定。希望这些内容能对您有所帮助,如还有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值