1. IETF
IETF,全称 Internet Engineering Task Force(互联网工程任务组),成立于 1986 年。Internet 其名的 TCP/IP 协议由 IETF 标准化。 1991 年,Web 发明人 Tim Berners-Lee 总结了其 Web 服务器和浏览器中实现的 HTTP 协议,也就是 HTTP 0.9:
随着 Web 的迅速流行,很多 Web 服务器在 0.9 版基础上增加了扩展。为了把这些扩展及时记录下来,IETF 成立 HTTP Working Group(HTTP WG)着手制定 HTTP/1.0。1996 年 5 月,IETF 发布了一份 RFC(Request for Comments,征求意见稿):RFC 1945。IETF 的 RFC 可以接受为正式标准,也可以作为参考文档。RFC 1945 就是一份参考文档(也就是 HTTP/1.0):
HTTP/1.0: tools.ietf.org/html/rfc194…
HTTP/1.0 增加了 HEAD 和 POST 方法。增加了可选的 HTTP 版本号。增加了 HTTP 头部字段描述请求和响应。增加了 3 位数的响应码(1xx 保留,2xx 成功,3xx 重定向,4xx 客户端错误,5xx 服务器错误。)HTTP/1.0 已经达到 20000 单词。
仅仅 9 个月后,1997 年 1 月 HTTP/1.1 就发布了。HTTP/1.1 很大程度上也是对 HTTP/1.0 的改进,增加了持久连接、强制服务器头部、更好的缓存和分块编码。为 Web 的发展奠定了基础。
1999 年 5 月被更新版替代。2014 年 5 月再次被更新。每次更新,之前的版本就废弃了。HTTP/1.1 已经长达 305 页,100000 单词。
HTTP/1.1:
tools.ietf.org/html/rfc206… tools.ietf.org/html/rfc261… tools.ietf.org/html/rfc723… tools.ietf.org/html/rfc723… HTTP 最初是纯文本协议。HTTP 消息是明文发送的。可以被任意截获和查看。HTTPS 通过使用 TLS(Transport Layer Security)协议对传输消息进行加密
The Transport Layer Security (TLS) Protocol Version 1.3: tools.ietf.org/html/rfc844…
HTTP/1.1 是纯文协议,解析不便,而且一个连接只能请求一个资源。随着 HTTP 请求量越来越大,这种低效越来越明显。尽管人们想出各种方案来提升效率,比如静态资源服务器分片、合并请求,但效果有限,而且会带来新问题。
HTTP/2 是对谷歌 SPDY 的标准化。包括多路利用的字节流、请求优化级和 HTTP 头部压缩。2012 年,HTTP Working Group 注意到 SPDY 的成功,提议制定新版本的 HTTP。2015 年 5 月,HTTP/2 也就是 RFC 7450 被批准为正式标准:
HTTP/2: tools.ietf.org/html/rfc754…
因为 HTTP/2 是基于 SPDY 的,在此之前,很多浏览器其实已经支持 HTTP/2(Firefox、Chrome、Opera),2015 年年底前所有浏览器都支持 HTTP/2(Internet Explorer 11、Edge、Safari)。
目前 HTTP/2 通信已经占全球 43.8%(w3techs.com/technologie…
Ecma Ecma International 成立于 1961 年,C#、Dart 语言由该组织标准化。当然,JavaScript 也是由 Ecma 标准化的。TC39 负责 ECMA-262,即 ECMAScript 标准的制定。
1997 年 6 月:ECMA-262 1st edition(110 页) 1998 年 8 月:ECMA-262 2nd edition 1999 年 12 月:ECMA-262 3rd edition ECMA-262 4th edition:不存在 2009 年 12 月:ECMA-262 5th edition(252 页) 2011 年 6 月:ECMA-262 5.1 edition 2015 年 6 月:ECMA-262 6th edition(566 页) 2016 年 6 月:ECMA-262 7th edition(556 页) 2017 年 6 月:ECMA-262 8th edition(885 页) 2018 年 6 月:ECMA-262 9th edition(805 页) 2019 年 6 月:ECMA-262.pdf(764 页) 历史版本:www.ecma-international.org/publication…
当前版本:www.ecma-international.org/publication…
W3C W3C,即 World Wide Web Consortium(万维网联盟),1994 年在美国 MIT 成立,是 Web 标准的主要制定者。目前有效的正式推荐标准有近 300 个(293 个):
The Latest Recommendation: www.w3.org/TR/?status=…
概览 BOM:BOM(Browser Object Model,浏览器对象模型)HTML5 规范中有一部分涵盖了 BOM 的主要内容,因为 W3C 希望将 JavaScript 在浏览器中最基础的部分标准化。
window 对象,也就是 ECMAScript 中定义的 Global 对象。网页中所有全局对象、变量和函数都暴露在这个对象上。 location 对象,通过location对象可以以编程方式操纵浏览器的导航系统。 navigator 对象,对象提供关于浏览器的信息。 screen 对象,保存着客户端显示器的信息。 history 对象,提供了操纵浏览器历史记录的能力。 DOM:DOM(Document Object Model,文档对象模型)是 HTML 和 XML 文档的编程接口。DOM 表示由多层节点构成的文档,通过它开发者可以添加、删除和修改页面的各个部分。脱胎于网景和微软早期的 DHTML(Dynamic HTML,动态 HTML),DOM 现在是真正跨平台、语言无关的表示和操作网页的方式。
DOM: Level 2 和 Level 3:DOM1(DOM Level 1)主要定义了 HTML 和 XML 文档的底层结构。DOM2(DOM Level 2)和 DOM3(DOM Level 3)在这些结构之上加入更多交互能力,提供了更高级的 XML 特性。实际上,DOM2 和 DOM3 是按照模块化的思路来制定标准的,每个模块之间有一定关联,但分别针对某个 DOM 子集。这些模式如下所示。
DOM Core:在 DOM1 核心部分的基础上,为节点增加方法和属性。 DOM Views:定义基于样式信息的不同视图。 DOM Events:定义通过事件实现 DOM 文档交互。 DOM Style:定义以编程方式访问和修改 CSS 样式的接口。 DOM Traversal and Range:新增遍历 DOM 文档及选择文档内容的接口。 DOM HTML:在 DOM1 HTML 部分的基础上,增加属性、方法和新接口。 DOM Mutation Observers:定义基于 DOM 变化触发回调的接口。这个模块是 DOM4 级模块,用于取代 Mutation Events。 动画与 canvas 图形: requestAnimationFrame 及使用绘制 2D 图形及使用 WebGL 绘制 3D 图形。
以下是对与前端开发相关主要 W3C Web 标准的筛选,包括 CSS、DOM、Graphics、HTML、HTTP、Performance、Security 和 Web API 这几个标签。这些只是目前已经成为推荐标准的部分。还有更多处于 WD(Working Draft,工作草案)、CR(Candidate Recommandation,候选推荐标准)、PR(Proposed Recommandation,提议推荐标准)状态的标准草稿,比如 Web Payment、Web of Things,甚至关于小程序的提案。
CSS CSS Containment Module Level 1 Selectors Level 3 CSS Fonts Module Level 3 CSS Basic User Interface Module Level 3 (CSS3 UI) CSS Color Module Level 3 CSS Namespaces Module Level 3 CSS Style Attributes