前端清单





前端清单是一份在站点/HTML页面发布到生产环境以前须要测试的全部元素的详尽列表。javascript
它基于前端开发人员多年的经验沉淀,以及其余优秀的开源清单。php
在Product Hunt上投票或推荐来帮助前端清单的推广?。css

目录
- Head
- HTML
- Webfonts
- CSS
- Images
- JavaScript
- Security
- Performance
- Accessibility
- SEO
How to use?
前端清单中的全部项目都是大部分项目所必需的, 但某些元素能够省略或者并非这么重要 (在管理Web应用程序的状况下,你可能并不须要RSS订阅源)。咱们选择使用一下3级区分:html
-
意味着该项目被推荐,但在某些特定状况下能够省略。
-
意味着该项目是强烈推荐的,可是可能在某些特殊状况下能被省略。某些元素,若是省略将会对性能或SEO方面产生不良影响。
-
意味着项目不能被任何理由省略。你的页面可能会致使功能障碍或有可访问性或SEO问题。测试优先级须要首先考虑这些元素。
某些资源拥有特定的标识符,帮助你去理解清单上不一样类型的内容或帮助。前端
- ?: 文档或文章
- ?: 在线工具/测试工具
- ?: 媒体或视频内容
Head
注意: 你能在HTML文档的<head>
中找到全部的清单列表。html5
Meta 标签
- [ ] Doctype:
Doctype是HTML5的属性,须要声明在HTML文件的顶部。
<!-- Doctype HTML5 -->
<!doctype html>
? Determining the character encoding - HTML5 W3Cjava
接下来三个 meta 标签 (Charset, X-UA Compatible, Viewport) 须要首先在head中声明git
- [ ] Charset:
正确声明Charset标签(UTF-8)。
<!-- 设置文档的字符编码 -->
<meta charset="utf-8">
- [ ] X-UA-Compatible:

X-UA-Compatible
元标签。
<!-- 指示Internet Explorer使用其最新的渲染引擎 -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
? 指定旧文档模式(Internet Explorer).aspx)github
- [ ] Viewport:
正确声明viewport
标签。
<!-- 响应式网页设计viewpoint声明 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
- [ ] Title:
全部页面都使用title
(SEO:包括网站标题不超过65个字符)。
<!-- 文档标题 -->
<title>Page Title less than 65 characters</title>
? Title - HTML - MDNweb
- [ ] Description:
提供description
标签, 它是惟一的同时内容不能超过150个字符。
<!-- Meta Description -->
<meta name="description" content="Description of the page less than 150 characters">
- [ ] Favicons:
每一个favicon
都被建立并正确显示,若是你只有一个favicon.ico
,把它放在你网站的根目录下。 一般来讲你不须要作任何操做他就能正常显示。 然而, 使用一下示例中的方法是比较好的作法。不过如今咱们推荐使用PNG格式,相比.ico
格式有较好的优点(推荐尺寸: 32x32px)。
<!-- 标准favicon -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- 推荐favicon格式 -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
- [ ] Apple Touch Icon:
苹果设备favicon适配。 (建立至少200x200像素尺寸的Apple图标文件以支持你可能须要的用到的全部尺寸)
<!-- Apple Touch Icon -->
<link rel="apple-touch-icon" href="/custom-icon.png">
? 配置Web应用程序
- [ ] Windows Tiles:
Windows tiles are present and linked.
<!-- Microsoft Tiles -->
<meta name="msapplication-config" content="browserconfig.xml" />
browserconfig.xml文件的最小所需xml标记以下所示:
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="small.png"/>
<square150x150logo src="medium.png"/>
<wide310x150logo src="wide.png"/>
<square310x310logo src="large.png"/>
</tile>
</msapplication>
</browserconfig>
? 浏览器配置模式参考.aspx)
- [ ] Canonical:
使用rel="canonical"
以免重复的内容。
<!-- 帮助防止重复内容出现 -->
<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-red.html">
HTML 标签
- [ ] Language tag:
指定你网站的语言标签并与当前页面语言相关联。
<html lang="zh_cn">
- [ ] Direction tag:

direction
属性规定元素内容的文本方向。(能够在另外一个HTML标签上使用)。
<html dir="rtl">
? dir - HTML - MDN
- [ ] Alternate language:
指定网站的语言标签并与当前页面的语言相关联。
<link rel="alternate" href="https://es.example.com/" hreflang="es">
- [ ] 条件注释:
若有须要,可针对IE添加条件注释。
? 关于条件注释(Internet Explorer) - MSDN - Microsoft.aspx)
- [ ] RSS feed:
若是你的项目是一个博客或者有大量的文章,能够添加一个RSS连接。
-
- [ ] CSS Critical:

CSS critical
收集并呈现当前页面可见部分的全部CSS。在主要的CSS调用以前以单行(最小化)在<style></style>
中嵌入。
? Critical by Addy Osmani on Github
- [ ] CSS 顺序:
全部CSS文件都须要在JavaScript文件加载以前加载完成(除了有时JS文件异步加载到页面以外的状况)。
Social meta
强烈推荐Facebook OG and Twitter Cards。若是你针对某些特定的存在并但愿确保显示,也能够考虑其余社交媒体标签。
- [ ] Facebook Open Graph:
全部Facebook Open Graph(OG)都通过测试而且没有任何错误。图片至少须要600 x 315像素,建议使用1200 x 630像素。
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="Content Title">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="Description Here">
<meta property="og:site_name" content="Site Name">
<meta property="og:locale" content="en_US">
- [ ] Twitter Card:
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="Content Title">
<meta name="twitter:description" content="Content description less than 200 characters">
<meta name="twitter:image" content="https://example.com/image.jpg">
⬆ 返回顶部
HTML
最佳实践
- [ ] HTML5 Semantic Elements:
正确的使用HTML5语义化标签(header, section, footer, main...).
? HTML 参考
- [ ] Error pages:
404页面和5xx错误的存在。5xx错误页面须要集成其CSS(在当前服务器上无外部调用)。
- [ ] Noopener:
若是你使用外部连接target="_blank"
, 你的连接必须有个rel="noopener"
属性,防止制表符的隐藏。若是你须要兼容旧版本的火狐浏览器,请使用rel="noopener noreferrer"
。
? 关于 rel=noopener
- [ ] 清除注释:
在将页面发布到生产环境以前,应该删除没必要要的代码。
HTML 测试
- [ ] W3C 兼容:
全部页面须要使用W3C验证器进行测试,以检测HTML代码中的可能存在的问题。
? W3C validator
- [ ] HTML Lint:
使用工具来帮助咱们分析HTML代码中可能存在的问题。
? Dirty markup
- [ ] Desktop Browsers:
全部页面都在桌面浏览器上经过测试(Safari, Firefox, Chrome, Internet Explorer, EDGE...)。
- [ ] Mobile Browsers:
全部页面都在移动端浏览器上经过测试(Native browser, Chrome, Safari...).
- [ ] 连接检查器:
页面中连接没有断开,请确认你没有404错误。
? W3C Link Checker
- [ ] 广告拦截器测试:
你的的网站会在启用广告拦截器的状况下正确显示页面内容(你能够提供一条消息,引导人们停用其广告拦截器)。
- [ ] Pixel perfect:
页面的像素级实现。根据设计稿的质量,你的页面可能作不到100%的还原,但你的网页须要尽量的靠近设计稿。
Pixel Perfect - Chrome 扩展
⬆ 返回顶部
Webfonts
- [ ] Webfont格式:
现代浏览器都支持WOFF、WOFF二、TTF格式
- [ ] Webfont 大小:
Webfont大小不超过 2 MB (包括全部版本在内)。
⬆ 返回顶部
CSS
注意: 大部分前端开发人员都会看看CSS指南和Sass指南。若是你对CSS属性有疑问,能够访问CSS参考文档.
- [ ] 响应式网站设计:
网站使用响应式设计。
- [ ] CSS打印属性:
提供打印样式表,并确保使用正确。
- [ ] 预处理器:
你的网站使用css预处理器(推荐Sass).
- [ ] 惟一ID:
若是使用了ID,确保ID的惟一性。
- [ ] Reset CSS:
使用CSS reset(如reset.css, normalize.css, reboot) (若是你使用的是CSS框架,例如Bootstrap或Foundation,则reset css已被包含在其中)
- [ ] JS 前缀:
全部以js-开头的class(或者JavaScript文件中使用的id)不写入css文件。
<div id="js-slider" class="my-slider">
<!-- Or -->
<div id="id-used-by-cms" class="js-slider my-slider">
- [ ] CSS embed or line:
避免使用CSS嵌入或内联,仅用于必要的状况(例如: background-image for slider, CSS critical).
- [ ] 浏览器内核前缀:
对部分属性加上浏览器内核前缀,生成你浏览器兼容的属性。
? Autoprefixer CSS online
性能
- [ ] 链接:
将CSS文件链接到一个文件中。 (不适用HTTP/2)
- [ ] 压缩:
压缩全部CSS文件。
- [ ] 非阻塞:
CSS文件须要非阻塞,以防在DOM加载时花费大量时间。
- [ ] 未使用的CSS:
删除未使用的CSS。
CSS 测试
- [ ] 格式检查:
全部的CSS或SCSS文件没有任何格式错误。
- [ ] 响应式网页设计:
全部页面都须要通过如下几种状况的测试: 320px, 768px, 1024px (根据本身的项目状况,能够设置更多)。
- [ ] CSS验证器:
CSS通过测试,同时全部错误都被修复。
? CSS验证器
- [ ] Reading direction:
若是须要的话,全部页面都须要对LTR和RTL语言进行测试。
⬆ 返回顶部
Images
注意: 想要完整的了解图像优化,能够在Addy Osmani查看免费电子书图像优化基础。
最佳实践
- [ ] 优化:
全部图像都通过优化而且可在浏览器中正常显示。WebP格式可用于关键页面(如首页)。 All images are optimized to be rendered in the browser. WebP format could be used for critical pages (like Homepage).
- [ ] 视网膜屏:
提供x2 或 3x的图像来支持视网膜屏显示。
- [ ] 雪碧图:
小图片放到一个雪碧图中。
- [ ] 宽高:
全部<img>
都须要设置高度和宽度(不要指定px 和 %)。
注意: 许多开发人员认为设置了宽度和高度就不能实现响应式设计,实际上并非这样的。
- [ ] Alternative text:
全部 <img>
必须有alt
属性来直观的描述图片。
- [ ] 懒加载:
图片懒加载 (A noscript fallback is always provided).
⬆ 返回顶部
JavaScript
最佳实践
- [ ] JavaScript 内联:
确保没有任何js代码内联(与HTML代码混合)。
- [ ] 链接:
将js文件链接起来。
- [ ] 压缩:
压缩全部js文件(能够添加 .min
后缀)。
压缩资源 (HTML, CSS, and JavaScript)
用JavaScript开发安全应用程序指南*
- [ ] 非阻塞:
JavaScript文件使用async或延迟使用defer属性异步加载。
? Remove Render-Blocking JavaScript
- [ ] Modernizr:
若是您须要定位某些特定功能,则可使用自定义Modernizr在<html>
标签中添加class。
? Customize your Modernizr
JavaScript 测试
- [ ] ESLint:
用ESLint检测并无错误(基于你的配置规则)。
⬆ 返回顶部
Security
扫描并检查你的网站
最佳实践
- [ ] HTTPS:
每一个页面和全部外部内容(插件、图像...)都使用HTTPS。
- [ ] HTTP严格传输安全性(HSTS):
HTTP头设置 'Strict-Transport-Security'.
- [ ] 跨站点请求伪造攻击(CSRF):
确保向服务器端发出的请求是合法的,并来自您的网站/应用程序,以防止发生CSRF攻击。
? 跨站点请求伪造(CSRF)防范清单 - OWASP_Prevention_Cheat_Sheet)
- [ ] 跨站脚本攻击(XSS):
页面或网站没有XSS攻击的可能性。
- [ ] Content Type Options
防止Google Chrome和Internet Explorer尝试将响应的内容类型从服务器声明的内容类型中嗅探出来。
- [ ] X-Frame-Options (XFO)
保护网站的访问者免受劫持攻击。
⬆ 返回顶部
Performance
最佳实践
- [ ] 页面大小:
每张网页的大小在0到500KB之间。
- [ ] 文件压缩:
压缩你的HTML文件。
? W3C Validator
- [ ] 懒加载:
图片、js脚本和CSS须要懒加载,以提升当前页面的响应时间(请参见各自部分的详细信息)。
- [ ] Cookie大小: 若是使用Cookie,确保每一个Cookie不超过4096个字节,而且域名下不超过20个Cookie。
为将到来的请求作准备
? 如下几种技术的详细说明
- [ ] DNS解析:
使用dns-prefetch
让第三方DNS服务商主动去执行域名解析的功能。
<link rel="dns-prefetch" href="https://example.com">
- [ ] 预链接:
使用preconnect
在空闲期间提早作好DNS查询, TCP三次握手和TLS 协商。
<link rel="preconnect" href="https://example.com">
- [ ] 预获取:
使用prefetch
在空闲期间提早请求即将须要的资源(例如:图像的懒加载)。
<link rel="prefetch" href="image.png">
- [ ] 预加载:
使用preload
提早加载当前页面所须要的资源(例如:js脚本放在<body>
的最后)。
<link rel="preload" href="app.js">
? 预加载和预获取之间的差别
性能测试
- [ ] Google PageSpeed:
全部的网页都通过测试(不只仅是首页),并且得分至少为90/100。
⬆ 返回顶部
Accessibility
注意: 查看播放列表A11ycasts with Rob Dodson ?
最佳实践
- [ ] 渐进式加强:
主要功能如主导航和搜索等功能应该在没有启用JavaScript的状况下工做。
? 在Chrome开发者具中启用/禁用JavaScript
- [ ] 颜色对比度:
颜色对比度至少经过WCAG AA标准(移动端须要经过AAA)。
? Contrast ratio
标题
- [ ] H1:
全部页面都有H1,它不是网站的标题。
- [ ] Headings:
标题应以正确的顺序合理使用(H1至H6)。
? Why headings and landmarks are so important -- A11ycasts #18
Landmarks
- [ ] banner角色:

<header>
标签中加入 role="banner"
属性。
- [ ] navigation角色:

<nav>
标签中加入 role="navigation"
属性。
- [ ] main角色:

<main>
标签中加入 role="main"
属性。
? Using ARIA landmarks to identify regions of a page
语义化
- [ ] 使用特定的HTML5输入类型:
这对于显示不一样类型的自定义键盘和小部件的移动设备尤为重要。
? Mobile Input Types
表单
- [ ] Label:

label
与每一个输入表单元素相关联,若是label
没法显示,请使用aria-label
代替。
? 使用aria-label属性 - MDN
Accessibility 测试
- [ ] Accessibility标准测试:
使用WAVE工具测试你的页面是否符合accessibility标准。
? Wave testing
- [ ] Keyboard navigation:
在你的键盘上以可能出现的操做顺序去测试,确保全部交互式元素均可访问和可用。
- [ ] Screen-reader:
全部页面都在屏幕阅读器(VoiceOver, ChromeVox, NVDA or Lynx)中进行了测试。
- [ ] Focus style:
若是焦点被禁用,它将被CSS中的可见状态所替代。
? Managing Focus - A11ycasts #22
⬆ 返回顶部
SEO
- [ ] Google Analytics:
Google Analytics 正确安装和配置。
- [ ] Headings logic:
标题文字有助于了解当前页面的主要内容。
- [ ] sitemap.xml:

sitemap.xml
存在并提交到Google Search Console(之前的Google管理员工具)。
- [ ] robots.txt:

robots.txt
正确配置,不阻止网页被爬取。
- [ ] 结构化数据:
使用结构化数据的页面经过测试而且没有错误。结构化数据帮助爬虫理解当前页面的内容。
- [ ] Sitemap HTML:
提供HTML网站地图,可经过网站页脚中的连接进行访问。
⬆ 返回顶部
Translation
The Front-End Checklist is also available in other languages. Thanks for all translators and their awesome work!
前端清单徽章
若是想显示出你的项目遵循了前端清单的各项规定,请将此徽章放在项目的README文件上!
➔ 
[](https://github.com/thedaviddias/Front-End-Checklist/)
⬆ 返回顶部
Contributing
提issue或提交合并请求以建议更改或添加。
Guide
前端清单 项目有两个分支:
1. master
该分支包含README.md
,内容会自动反映到前端清单。
网站上。
2. develop
这个分支将用于对结构和内容进行一些重大更改。不过最好仍是使用主分支来修复小错误或添加新项目。
贡献
查看全部贡献人员 contributors.
Support
若是您有任何问题或建议,能够经过Gitter或Twitter联系咱们:
做者
David Dias
License

⬆ 回到顶部