web 开发团队的一个常见实践是创建一组标准文件,团队成员基于它们开始 web 开发流程,包括一个公共文件结构、基本命名惯例和标准库。
这样做能够更容易启动并运行一个项目。它还能将开发人员引向内部编码标准并实施标准文件组织。HTML5 Boilerplate 就是这种处于 web 开发最前沿的完美理念的实现。
HTML5 Boilerplate 是一套专业的前端模版,用以开发快速、健壮、适应性强的app或网站。
HTML5 Boilerplate并不是一个新的前端框架,而是一套最佳实践的组合,可以简化我们的工作,提高开发效率,仅此而已。
一个基本的 HTML5 Boilerplate 站点,最初的目录结构就像这样:
.
├── css
│ ├── main.css
│ └── normalize.css
├── doc
├── img
├── js
│ ├── main.js
│ ├── plugins.js
│ └── vendor
│ ├── jquery.min.js
│ └── modernizr.min.js
├── .editorconfig
├── .htaccess
├── 404.html
├── apple-touch-icon.png
├── browserconfig.xml
├── index.html
├── humans.txt
├── robots.txt
├── crossdomain.xml
├── favicon.ico
├── tile-wide.png
└── tile.png
下面是有关该目录的组成及使用方式的整体概述:
/css
文件夹保存项目中的所有CSS文件。文件夹中包含了一些用于初始化的 CSS,为开发者在构建项目前提供标准化的开发环境。
/doc
文件夹保存 HTML5 Boilerplate 的所有开发文档。可以使用它作为开发者个人项目的基础文档。
/js
文件夹保存项目中的所有 js 文件。库、插件和自定义代码都可以放在这里,此外还包括了一些用于初始化的 js,以帮助开发者构建项目。
该文件默认为 Apache 的网络服务器配置信息。更多信息,请参考 Apache Server Configs repository。
如果网站托管的服务器不是 Apache,那么可以在 Server Configs项目中找到相关服务器的配置信息。
一个自定义的404页面,有益于开发者快速开始构建项目。
该文件包含 IE11 动态瓷贴的设置信息。
更多信息,请参考MSDN。
该文件的作用在于,帮助和激励开发者及其团队,在编辑器和 IDE 之的范。
该页面包含默认的 HTML 结构,建议开发者使用它作为页面的基础结构。如果开发者正在使用一个服务器端的模版引擎,那么可能需要在项目构建之初,将该页面结构整合入模版引擎。
如果开发者修改了目录结构,请确保同时更新了 CSS 和 JavaScript 的引用地址。
如果开发者使用了谷歌分析脚本(Google Analytics),请确保网页底部相关脚本的 Analytics ID 书写正确。
该文件记录网站、应用程序的开发团队及开发技术等信息。
该文件记录对搜索引擎屏蔽的页面。
一个用作跨域请求的模板。
可以根据需要替换默认的 favicon.ico,tile.png,tile-wide.png 和 Apple Touch Icon。
更多信息,可以参考 Hans 的这篇文章——HTML5 Boilerplate Favicon and Apple Touch Icon PSD-Template。
HTML5 Boilerplate 默认提供两个 html 页面:
no-js
类 no-js
类可以让开发者依据 JavaScript 被启用(.js
)或被禁止(.no-js
)两种状态,更轻易准确地添加自定义样式。
使用这个技巧也有助于避免浏览器闪烁(FOUC)。
lang
属性 请认真考虑在 中添加
lang
属性,从而对页面内容所使用的语种加以说明,举例如下:
<html class="no-js" lang="en">
和
标签的顺序 置顶
和 标签的顺序意义重大,原因如下:
):
元素),以避免 IE 潜在的编码安全问题。
): 除
和其他 标签外,该标签必须在其他标签之前声明。
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">
整站的快捷方式图标应该存放在根目录。HTML5 Boilerplate 默认提供了一组图标(包括 favicon 和 Apple Touch Icon),为开发者提供设计参考。
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('