HTML 解析

优质
小牛编辑
134浏览
2023-12-01

HTML5 Boilerplate 默认提供两个 html 页面:

  • index.html
  • 404.html

index.html

no-js

no-js 类可以让开发者依据 JavaScript 被启用(.js)或被禁止(.no-js)两种状态,更轻易准确地添加自定义样式。

使用这个技巧也有助于避免浏览器闪烁(FOUC)

lang 属性

请认真考虑在 <html> 中添加 lang 属性,从而对页面内容所使用的语种加以说明,举例如下:

<html class="no-js" lang="en">

<title><meta> 标签的顺序

置顶 <title><meta> 标签的顺序意义重大,原因如下:

字符集声明(<meta charset="utf-8">):
兼容模式的元标签(<meta http-equiv="x-ua-compatible" content="ie=edge">):

<title> 和其他 <meta> 标签外,该标签必须在其他标签之前声明

x-ua-compatible

IE 8/9/10 支持文档兼容模式——该模式会对文档解析和页面渲染产生影响。因此,即使网站的访问者使用了 IE 9 或更高版本的浏览器,IE 也有可能不使用最新的渲染引擎,而会使用 IE 5.5 渲染引擎解析你的页面。

x-ua-compatible 元标签的详细内容如下:

<meta http-equiv="x-ua-comptible" content="ie=edge">

此外,可以使用 HTTP 响应头信息 x-ua-comptible: ie=edge 来发送网页数据。这种方式将强制 IE 8/9/10 使用最新的可用模式来渲染页面,即使某些情况下并不适合使用该模式。因此,要确保浏览该网站的所有浏览器,都尽可能提供最佳的用户体验。

如有可能,我们建议移除 meta 标签,而只发送 HTTP 响应头信息。这么做的原因是,如果你的网站运行在非标准的端口上, IE 默认会 “在兼容性视图下显示内部网站”,而此时 meta 标签就不会起作用了。

如果你正在使用 Apache 作为网络服务器,那么可以使用 .htaccess 文件来配置 HTTP 响应头信息。如果是其他网络服务器,可以点击这里查看其他服务器配置信息

从 IE 11 开始,文档模式已经被弃用了。如果你的业务仍然依赖于陈旧的网页应用,或者你的业务就是为老版本 IE 设计的,那么可以考虑在全公司使用 企业版模式(Enterprise Mode)

移动端视图

使用 viewport 元标签时有些许不同。更多信息详见苹果开发者文档。HTML5 Boilerplate 初始化了一些简单的设置,希望在多种使用情境下取得良好平衡。

<meta name="viewport" content="width=device-width, initial-scale=1">

Favicons 和 Touch Icon

整站的快捷方式图标应该存放在根目录。HTML5 Boilerplate 默认提供了一组图标(包括 favicon 和 Apple Touch Icon),为开发者提供设计参考。

Modernizr

HTML5 Boilerplate 使用了一份自定义的 Modernizr。众所周知,Modernizr 是一个 JavaScript 库,作用是确保所有浏览器都可以使用 HTML 5 元素(它包含了 HTML 5 shiv),同时还会根据功能检测的结果为 html 元素添加不同的类名。便于开发者明确某个浏览器所支持的 CSS 和 JavaScript 特性。

通常来说,为了最大程度地减少页面加载时间,最好的方式是在页面底部调用 JavaScript,以此避免加载外部脚本的过程阻塞整个网页的渲染和解析进度。但是,Modernizr 脚本应该在浏览器渲染页面前就加载执行,这样才能让浏览器正确处理尚未支持的 HTML5 元素。因此,Modernizr 脚本应该是唯一可以在文档头部加载的 JavaScript 脚本。

腻子脚本

如果你需要在项目中加载 腻子脚本(polyfills) ,那么你必须确保腻子脚本在其他 JavaScript 之前加载。如果你正在使用类似cdn.polyfill.io的 ployfill CDN 服务,只需在页面底部将其放在其他脚本之前即可。

<script src="//cdn.polyfill.io/v1/polyfill.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>

如果只是想方便自己使用腻子脚本,可以将它们包含到 js/plugins.js 中。当你有了一堆腻子脚本需要加载时,可以在 js/vendor 文件夹创建一个 polyfills.js 文件。当然使用这个技巧也要注意,确保腻子脚本在其他 JavaScript 脚本前完全加载。

有些人对于 Modernizr 和腻子脚本的认知存在一些误区。正确理解 Modernizr 很重要:它只进行功能检测而不执行功能修复。Modernizr 唯一关注的修复工作,是有关跨浏览器方面腻子脚本的冗长列表

内容区

HTML5 Boilerplate 模版的内容基本是空的。这么做是有意而为的,以方便 Boilerplate 模版同时适配网页(web page)和网页应用(web app)的开发。

浏览器升级提示

Boilerplate 的内容区包含了一条提示,建议 IE 6/7 的用户安装最新版本浏览器。如果你打算支持 IE 6/7,那么你需要移除相关代码。

由 Google CDN 分发的 jQuery

Google CDN 提供的 jQuery ,使用 protocol-independent 路径放置在了页面底部。此外还设置了一个本地的 jQuery 版本,从而在 CDN 版本不可用或启用离线版本的时候调用。

Google CDN 的版本之所以能从众多的可选版本(比如 jQuery CDN)脱颖而出,一方面是因为它响应速度快,另一方则是因为它具有最佳的穿透力(获取的成功率),这有助于提高将库文件传输到用户浏览器缓存的成功率。

虽然 Google CDN 是模版中开发网页和应用默认的分发网络,但你可能还需要做进一步的配置。你可以使用类似 WebPageTest 的服务和类似 PageSpeed InsightsYSlow 的浏览器工具测试网站,这有助于帮你测试网站的实际表现,并且指出特定网页或应用有待优化的地方。

谷歌分析代码

最后,是一段谷歌分析代码。谷歌建议将该脚本置于文档头部。其考虑如下:如果将该脚本置于网页头部,那么即使页面未完全加载,也可以统计用户访问量,并且可以激发浏览器的最大并发连接数。

更多信息请参考:

注意:之所以默认包含谷歌分析代码,是因为谷歌分析是当前最流行的追踪解决方案之一。然而,它的用法并不是一成不变的,你应该查看可替代方案,以选择最适合自己的。