前端代码标准最佳实践:HTML篇

Web前端代码中,HTML是根本,CSS和JavaScript也是围绕着既有的HTML结构来构建,所以良好的HTML代码结构,除了提高了HTML代码的可读性,可维护性和执行性能之外,也可以让相对应的CSS和JavaScript代码更好的构建。距前面两篇探讨JavaScript(前端代码标准最佳实践:JavaScript篇)和CSS(前端代码标准最佳实践:CSS篇)之后,我们今天来探讨Web前端HTML的一些最佳实践。

(1)HTML代码的基本规范

1. HTML的命名和格式

任何代码的混乱都是从命名和格式的混乱开始的,所以一定要有统一和规范的命名和格式,以下是一些基本的规范。

HTML代码所有的标签名和属性应该都为小写,虽然HTML代码是大小写不敏感的,但是W3c的规范建议为小写;属性值应该用双引号包括。

给所有的关键元素定义元素的id和class,便于和CSS,JavaScript的交互;id名称中的关键词用下划线(_)连接,class的关键词用中划线(-)连接,根据实际的意义和Dom树的层级关系定义合适的名称。

HTML代码的层级缩进为4个空格;值为空的元素定义应该单独占用一行;包含子元素的元素的起始标签和闭合标签分别单独占用一行。

例子:

<div id="info_container" class="info-container">
    <div class="container-top"></div>
    <article>
         ...
    </article>
    <div class="container-bottom"></div>
</div>

2 CSS代码和HTML代码分离

样式可以直接写在标签的style属性里面,也可以写在页面head区域的style标签里面,这两种方式都是不好的方式,尤其第一种方式。应该把样式单独写到css样式文件中,方便代码的重用和维护。

3. 写标准的HTML代码

所有的HTML标签应该正确闭合;所有的元素定义都要有起始和闭合标签,即使元素的值为空,除了如下这些标签,如下的标签是可以自闭合:<br/><hr/><input/><img/>等。

停止规范不支持的标签,如下的标签规范已经不推荐使用,尽管浏览器可以正确的解析:<center><font><s><strike><u><menu>等。

停止使用规范不支持的属性,如下的属性已经不推荐使用:body的background属性,某些标签的align属性,td和th上的nowrap属性,某些标签的width和height属性等。其实这些规范不推荐的标签和属性都是一些影响外观的标签和属性,都可以通过CSS样式来设置。

应该经常验证代码的标准性,可以使用w3c提供的验证工具:Unicorn

(2)高可读性的HTML代码

1. 合适的地方用合适的标签

HTML代码不是纯粹为了让浏览器展现,也需要良好的可读性,方便代码的检查和维护,更重要的是各种搜索引擎也能更好地识别页面内容,所以要写有语义的HTML代码,即经常提到的HTML标签语义化。

div和span是两个典型的没有任何语义的标签,所以使用这两个标签之前先确认,是否有更具有语义的标签可以代替。

<h1>~<h6>

h1到h6是作为标题的,h1是最高级别的标题,网页中显示标题的地方应该使用这些标题标签。

<em>和<strong>

这两个标签的语义是强调和重点强调,代替了没有任何语义的标签<i>和<b>。

<table>

table标签最早是经常用于布局,至今还有大量的页面是由table来布局的,table布局遭到了前端工程师们的一致唾弃,使得很多新手不敢使用这个标签了,这里要强调的是table的语义是表格,如果需要列出一些统计数据等,table标签是首选。

<ul>,<ol>,<li>

<ul>是无序列表,<ol>是有序列表,所以网页的导航菜单最合适用ul,而一些有序的列表,比如章节列表等,则应该用ol标签。

不好的例子:

<div class="title">文章标题</div>

<p>
正文内容,<b>需要强调的内容</b>
</p>

<div class="main-menu">
    <span>导航1</span>
    <span>导航2</span>
    <span>导航3</span>
</div>

规范的例子:

<h1>文章标题</h1>

<p>
正文内容,<strong>需要强调的内容</strong>
</p>

<ul class="main-menu">
    <li>导航1</li>
    <li>导航2</li>
    <li>导航3</li>
</ul>

2. 给页面添加必要的meta

meta信息描述有关页面的信息,放在页面的head部分,用于搜索引擎更友好的识别。如下是常用的一些定义:

<meta name="author" content="John Doe">
<meta name="copyright" content="&copy; 1997 Acme Corp.">
<meta name="keywords" content="corporate,guidelines,cataloging">
<meta name="date" content="1994-11-06T08:49:37+00:00">

3. 不要省略某些标签的属性

<img>标签的alt属性的作用是当图片不能正常显示的时候的替换文字,<a>标签的title属性可作为说明信息,并且当鼠标hover时显示为提示信息。

(3)高性能的HMTL代码

1. CSS文件在前,JavaScript文件在后,JavaScript代码放到页面底部

JavaScript文件的下载和解析会阻塞页面的加载,所以在head部分,CSS的引用写在前面,而JavaScript文件的引用写在后面;

另外script标签有两个属性async和defer,defer设置为true,则意味着此JavaScript文件滞后执行,不影响页面HTML的渲染,async是HTML5中新引入的属性,已经得到了大多数现代浏览器的支持,此属性设置为true意味着文件异步加载和执行。两个属性的区别是async下载完成后就会执行,而defer则会还是按照在页面的的次序来执行,所以下载和执行不一定会连续。可以根据实际的项目情况设置这两个属性,提高页面加载的速度。

2. 精简HTML代码

越精简的HTML代码,页面的传输的时间就会越短,页面的渲染的时间也会更快,相应的用户体验就会越好,所以很有必要精简页面加载的HTML代码。

页面的精简主要从如下几个地方入手:

删除多余标签

多余的标签大多是为了方便布局而加入的,例如如下的代码:

<div>
    <ul>
        <li>item1</li>
        <li>item2</li>
        <li>item3</li>
    </ul>
</div>

代码中最外层的div标签大部分情况下是没有必要,其内层的ul标签可以完全担当其作用,可以直接删除此标签,并适当调整ul的样式。

动态加载和渲染非关键区域

在页面中某些区域并不是用户重点关注的区域,例如页面的广告,一些统计信息等,此类内容可以等待页面关键区域加载后通过javascript代码动态加载和显示。

3. 谨慎使用iframe

iframe有两个缺点:1,iframe会阻塞主页面的Onload事件;2,iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。使用iframe之前需要考虑这两个缺点。
如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以可以绕开以上两个问题。

总结

以上是一些常见的HTML开发过程中要注意的地方,其实有关HTML还有很多细节的技巧,需要我们在实践中不断的总结。本文的目的在于抛砖引玉,让大家重视代码的可读性,可维护性,以及代码的性能,在开发的过程中有意识地去考虑这些问题,养成良好的编码习惯比熟悉某项开发技术更重要。

时间: 2024-10-31 18:33:21

前端代码标准最佳实践:HTML篇的相关文章

前端代码标准最佳实践:CSS篇

上一篇<前端代码标准最佳实践:javascript>发表后,大家讨论还是很热烈,从侧面体现了前端工程师对写标准的前端代码的重视程度很高.这些最佳标准实践并不是那个权威组织发布的,而是由大量的前端工程师们在实践过程中的经验总结,目的在于提高代码的可读性,可维护性和性能.那么接着上一篇,我们再来谈谈CSS代码的一些标准实践. 1,命名 和其他语言规范一样,css的命名也讲究命名要有意义,命名要尽可能短但是要足够表达含义:命名的词用连字符连接. 不规范的命名: #navigation{ } .dem

前端代码标准最佳实践:javascript篇

前言 最近一直重构项目的前端代码,也参考了各种前端代码的最佳实践,目的是让前端的HTML,CSS,JavaScript代码更符合标准,有更好的性能,更好的可维护性,尝到了重构后的甜头,也萌生了写这个系列博客的念头.前端代码有其固有的灵活性,这就导致了目前前端代码非常混乱的局面,本系列文章希望能起到抛砖引玉的作用,让更多的人重视前端代码的质量,编写更标准的前端代码. 本系列文章共有三篇,分别讨论HTML,CSS,Javascript,本篇将讨论Javascript. 目前,Javascript已广

基于AngularJS前端云组件最佳实践_AngularJS

AngularJS是google设计和开发的一套前端开发框架,他能帮助开发人员更便捷地进行前端开发.AngularJS是为了克服HTML在构建应用上的不足而设计的,它非常全面且简单易学习,因此AngularJS快速的成为了javascript的主流框架. 一.Amazing的Angular AnguarJS的特性 方便的REST: RESTful逐渐成为了一种标准的服务器和客户端沟通的方式.你只需使用一行javascript代码,就可以快速的从服务器端得到数据.AugularJS将这些变成了JS

jQuery最佳实践完整篇_jquery

上周,我整理了<jQuery设计思想>. 那篇文章是一篇入门教程,从设计思想的角度,讲解"怎么使用jQuery".今天的文章则是更进一步,讲解"如何用好jQuery". 我主要参考了Addy Osmani的PPT<提高jQuery性能的诀窍>(jQuery Proven Performance Tips And Tricks).他是jQuery开发团队的成员,具有一定的权威性,提出的结论都有测试数据支持,非常有价值. ============

断篇-金融大数据最佳实践总结篇

一.数据挖掘的价值体现 任何数据分析或者挖掘的项目都不会直接产生经济价值和意义,分析出的数据结果既不能给企业直接带来一个客户,也不能帮助企业卖出一件产品.数据分析的价值体现在于业务部门根据分析结果制定相关的经营策略并贯彻执行. 二.大数据之困-通道 大数据之困-如何打通底层数据存储到上层数据服务的通道问题,讲成为制约大数据发展的关键因素.当越来越多的人意识到大数据的未来在应用的时候,这个问题也就越来越紧迫. 三.大数据金融-行业化运作 大数据金融行业化营销模式才是王道,单独的通过打项目的方式做项

《Web前端开发最佳实践》——导读

前 言 Web前端开发入门难度并不高,但是初学者如果没有一个很好的学习和编码习惯,则开发水平的提高速度会变得很慢.下面几点是影响Web前端开发者技术提高的主要因素. 其一是开发者缺乏良好的实践指导.Web前端兴起的时间不长,很多大学都还没有来得及开一门专门讲解Web前端的课程,因此,大部分的Web前端开发者都是通过自学的方式来了解Web前端相关的技术.开发者学习前端技术的渠道很多,其中很大一部分是通过查找网络资源的方式,而网络上充斥着大量的错误或者过时的实践方法,这些实践方法很容易误导初学者,使

OpenStack获最佳实践徽章 安全性、稳定性获肯定

OpenStack日前宣布其开源云软件项目荣获Linux基金会核心基础设施计划(简称CII)颁发的最佳实践徽章.CII由Linux基金会发起,计划将数百万美元的资金用于资助全球信息基础设施的一些关键项目. CII最佳实践徽章充分表明了OpenStack坚持安全开发的承诺.此次获得CII徽章的项目认证由OpenStack安全项目组主导,其中包括就职于IBM的高级安全架构师Travis McPeak.敬请访问CII OpenStack认证页查看通过具体测试的详情. McPeak表示:"随着开源迅速发

Hadoop MapReduce开发最佳实践

前言 本文是Hadoop最佳实践系列第二篇,上一篇为<Hadoop管理员的十个最佳实践>. MapRuduce开发对于大多数程序员都会觉得略显复杂,运行一个WordCount(Hadoop中hello word程序)不仅要熟悉MapRuduce模型,还要了解Linux命令(尽管有Cygwin,但在Windows下运行MapRuduce仍然很麻 烦),此外还要学习程序的打包.部署.提交job.调试等技能,这足以让很多学习者望而退步. 所以如何提高MapReduce开发效率便成了大家很关注的问题.

《配置管理最佳实践》——2.10 建立构建过程

2.10 建立构建过程 实施构建工程最佳实践是一项非常具有挑战性的工作.构建工程师可以选择有益于公司的实践:也可以选择最好的工具去建立可重复的构建,实施持续集成.但是实际工作远不止此,构建工程部门还需要为开发团队提供培训和技术支持.我的经验是和研发团队合作,解决构建和部署过程中的问题,然后转到幕后做支持,把日常的工作还交给开发团队来负责.这里有个前提就是公司的合规部门允许这样做.曾经一家实施 SAS-70的公司认为可以接受这样的做法:但是另外一家公司认为这不合规,不能接受.在一些公司里因为合规的