2、HTML规范:语义化标签使用、属性顺序、模板语法规范、SEO友好写法

语义化标签:不只是div的替代品

说实话,我刚入行那会儿也觉得语义化标签挺虚的。不就是把<div>换成<header><footer>嘛?后来在一个大型后台项目中,团队来了个视障工程师,我才真正意识到语义化的价值——屏幕阅读器全靠这些标签来理解页面结构。

语义化标签的核心就一句话:让代码自己会说话。你想想看,一个<nav>标签,谁看了都知道这是导航区。换成<div class="nav">,意思一样,但机器读不懂。

我个人的常用标签清单:

  • <header> — 页眉,通常放logo、搜索框
  • <nav> — 主导航区域
  • <main> — 页面主体内容,一个页面只用一次
  • <article> — 独立的内容块,比如博客文章
  • <section> — 有主题的分区,一般带标题
  • <aside> — 侧边栏,或者与主内容相关的补充信息
  • <footer> — 页脚,版权、联系方式

我在项目中遇到过一种情况:产品经理要求页面结构大改,因为之前全是<div>嵌套,改起来简直噩梦。后来重构时用了语义化标签,每个区块职责清晰,改结构就像搭积木一样简单。

属性顺序:让代码有呼吸感

属性顺序这件事,很多团队不重视。但你知道吗?统一的属性顺序能让代码阅读效率提升30%以上。我自己带团队时,定了一套规则:

<!-- 推荐顺序 -->
<input 
  type="text" 
  class="form-input" 
  id="username" 
  name="username" 
  value="张三" 
  data-user-id="123" 
  aria-label="用户名" 
  disabled 
/>

<!-- 不推荐:乱序 -->
<input disabled class="form-input" id="username" type="text" name="username" value="张三" data-user-id="123" aria-label="用户名" />

我建议的顺序规则:

  1. 核心属性typehrefsrc — 决定元素本质的放最前面
  2. 标识属性classidname — 用于选择和定位
  3. 内容属性valueplaceholderalt — 展示的数据
  4. 自定义属性data-* — 业务相关
  5. 无障碍属性aria-*role — 辅助功能
  6. 布尔属性disabledreadonlychecked — 开关类放最后

一个小技巧:在VS Code里装个"HTML End Tag Labels"插件,配合统一的属性顺序,代码结构一目了然。

模板语法规范:别让模板变成意大利面

现在前端项目基本都用框架了,Vue、React、Angular各有各的模板语法。但不管用什么框架,有些底层规范是通用的。

我踩过的坑:曾经有个项目,模板里混用了v-ifv-show,还嵌套了五六层条件判断。后来需求变更,改一个条件要翻半天代码。说白了,模板语法混乱比JS逻辑混乱更可怕——因为它直接决定了页面的渲染结构。

几条硬性规范:

场景 推荐写法 不推荐
条件渲染 v-if="isVisible" v-if="isVisible === true"
列表渲染 v-for="item in list" :key="item.id" v-for="(item, index) in list" :key="index"
事件绑定 @click="handleClick" @click="handleClick($event)"
属性绑定 :src="imageUrl" v-bind:src="imageUrl"

注意:千万别在模板里写复杂逻辑!我见过有人直接在模板里写v-if="list.filter(item => item.status === 'active').length > 0"。这种代码应该提取到计算属性里。模板只负责展示,逻辑交给JS。

SEO友好写法:让搜索引擎爱上你的页面

SEO这事儿,前端能做的其实不多,但做对了效果很明显。我记得有个电商项目,仅仅优化了标题标签和图片alt属性,自然流量就涨了15%。

核心要点:

  • 标题层级要严格:一个页面只有一个<h1>,然后按<h2><h3> 顺序往下。别跳级,别滥用。
  • 图片必须加alt:不只是为了SEO,更是为了无障碍。我习惯把alt写成「场景+主体+动作」的格式,比如「用户在首页点击搜索按钮」。
  • 链接要有描述性文字:别用「点击这里」、「更多」这种。用「查看2024年产品价格表」代替。
  • 结构化数据:用JSON-LD格式添加schema.org标记,让搜索引擎能理解你的内容类型。
<!-- 结构化数据示例 -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "前端代码规范与团队协作实践",
  "author": {
    "@type": "Person",
    "name": "资深前端架构师"
  },
  "datePublished": "2024-01-15"
}
</script>

避坑指南:我曾经为了SEO在页面里堆了50多个<h1>,结果被搜索引擎降权了。搜索引擎不傻,它知道你在作弊。老老实实按语义来,比什么黑帽SEO都管用。

嗯,HTML规范说到底就四个字:清晰、一致。语义化让结构清晰,属性顺序让代码一致,模板语法让逻辑清晰,SEO写法让目标一致。这四点做到了,你的HTML代码基本就合格了。