前端溯源 - Web 标准与历史

1,487 阅读9分钟

tim

背景

学习的过程中,经常听到 ES6、ES2021、W3C、WHATWG、MDN 等等词汇,本文旨在通过梳理 Web 规范与组织之间的关系,了解 Web 发展的历史,学会在碰到问题时定位文档与规范。

Web 是什么

我们经常称自己是 Web 前端开发,那 Web 是什么呢?

借鉴李松峰老师的精彩讲解

Web 是 World Wide Web(万维网)的简称,是构建于 Internet(互联网)之上的一种应用。是 Tim Berners-Lee 于 1989 年在 CERN(欧洲核子研究组织,位于瑞士日内瓦)工作时发明的。

那 Internet 又是什么呢?

Internet 是世界上不同机器之间通信的网络,互联网 - 主机之间相互连接的网络。

image-20210228145439272

Web 是在 Internet 之上相互链接的资源。

image-20210228145503679

用户在浏览器上输入 URL,浏览器通过网络协议(大多数网站使用 HTTP/HTTPS 协议)封装请求数据,按照 Internet 的分层网络通信模型(TCP/IP 模型)找到目标主机;主机通过处理,返回网页相关的 HTML 、CSS 等资源,再反向传输回用户主机,把网页呈现在浏览器上。

image-20210228150016822

Web 标准组织

IETF

Internet Engineering Task Force(互联网工程任务组)

image-20210228152737026

最早的互联网标准组织,在 Web 发明之前,就存在互联网了,其中构成 TCP/IP 协议族的标准由 IETF 制定。

如:

  • HTTP
  • URL
  • ...

学习 HTTP 除了 《HTTP 权威指南》,溯源还是得看 HTTP 标准,HTTP 标准非常零散,这是 MDN 的汇总列表

W3C

World Wide Web Consortium(万维网联盟)

image-20210228155256241

W3C 是制定 Web 标准的主要组织,由 Web 之父创建,制定的标准涵盖 Web 各种技术:

  • HTML
  • CSS
  • DOM
  • JavaScript Web API
  • ...

由于 CSS3 标准被拆分成零散的独立模块,我们学习 CSS 的时候可以通过 W3C 搜索 Title 为 CSS 2 来对 CSS 整体有个结构性的认识。其它的各个 Web 相关标准都可以尝试 搜索 W3C 学习。

WHATWG

Web Hypertext Application Technology Working Group(Web 超文本应用技术工作组)

image-20210228163539587

明明已经有了 W3C,WHATWG 又是个什么鬼?

不难从 WHATWG - FQA 中找到答案:由于 W3C 致力于 XHTML 方向而不顾 HTML,疏于关心真实 web 开发者的需求,于 2004 年一票来自 Apple、Mozilla Foundation、Opera Software 志同道合的人成立了 WHATWG。浏览器开发商最关注的就是用户体验,有开发商背景的 WHATWG 显然能更好地推动 Web 特性标准化的进程。

由 WHATWG 制定的标准有:

  • HTML
  • DOM
  • Fetch
  • URL
  • ...

所以不奇怪一份标准为什么会涉及到多个组织,这是有历史渊源的。

HTMLDOM 基本都是 WHATWG 在维护了。

Ecma

European Computer Manufacturers Association International(欧洲计算机制造商协会国际化)

image-20210228171004954

在四个组织里 Ecma 是历史最悠久的,1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。

Ecma 下面有很多技术委员会(Technical Committee),其中 TC39 负责 JavaScript 的标准 ECMA-262 制定,现在最新已经到 ECMAScript® 2021 Language Specificationdraft 状态)。

MDN

我们在学习前端技术的时候,会经常使用 MDN 查接口,那 MDN 是什么?和 Web 标准组织又是啥关系?

MDN,全称是 Mozilla Developer Network,之前叫 Mozilla Developer Center,现在叫 MDN Web Docs。

image-20210228173322869

MDN 大事记:

  • 2005 年 Mozilla 启动的一个项目,用于归置开放 Web 标准、内部项目、开发者指导这些文档。

  • 2017 年谷歌、微软、三星关掉了自家的文档项目,并将文档全部迁移进了 MDN Web Docs。

  • 2019 年用 React 重构网站。

  • 2020 年所有可编辑内容的源码都放到 Github 上了。

  • 2021 年开始募资(不用再操心 MDN 会挂掉了)。

可以说 MDN 是前端开发文档首选,我们在查询某个 API 时,在下面的 Specifications 中有相关标准的链接以供深入学习。

MDN 同样提供了体系化的学习路径,从 HTML、CSS、JavaScript 到框架、到 Express(Node.js 框架)等。

MDN 与网景公司可以说存在千丝万缕的关系,下文讲介绍到。

文档汇总工具推荐

推荐几个汇总了各个语言文档的工具,前端三大件当然是汇总了 MDN 文档。

客户端(提供离线版)

线上版

Web 发展史简介

做了个 Web 发展时间轴,从时间的维度了解各个标准组织成立,主流浏览器厂商,网络协议(HTTP、SSL/TSL),HTML、CSS、JavaScript 规范的发展:

                
                                                                              第一次浏览器大战开始,2001 年结束                                 第二次浏览器大战开始,2017 年结束
                               WordWideWeb             Mosaic    网景导航者     IE                                        Safari     Firefox                           Chrome
                     万维网                                   
                       |           |                     |          |          |                                           |          |          |                     |                      
1961 ————> 1986 ————> 1989  ————> 1990 ————> 1991 ————> 1993 ————> 1994 ————> 1995 ————> 1996 ————> 1997 ————> 1999 ————> 2003 ————> 2004 ————> 2005 ————> 2006 ————> 2008 ————> 2011 ————> 2015 ————> 2018 ————> ...     
  |         |          |                      |                     |                     |          |          |                     |          |          |          |          |          |          |
ECMA       IETF                                                 W3C + ECMA -> Ecma                                                             WHATWG      MDN
                      HTTP                 HTTP/0.9               SSL2.0       HTTP/1.0 + SSL3.0   http/1.1   TLS1.0                                      TLS1.1     TLS1.2               HTTP/2.0    TLS1.3
                      HTML                                      JavaScript               CSS      ECMAScript                                                                     ES5.1      ES6



Tim Berners-Lee

Web 之父,1989 年提出于互联网之上构建一套信息管理系统,就是万维网,包含:

  • UDI - 定位资源,后来的 URL 与 URI
  • HTTP - 传输数据的方式
  • HTML - 描述结构化信息及相互链接
  • WorldWildWeb - 解析服务器响应数据并展示给用户,首款浏览器

1994 年创建 W3C。

网景

Web 发展历史中,网景扮演着不可或缺的角色,网景大事记:

  • 1993 年网景创始人 Marc Andreessen 开发了首款流行浏览器 Mosaic,其创新的图形界面,才使得 Tim Berners-Lee 发明的万维网走进千家万户,从而引爆了互联网的发展
  • 1994 年 Marc 创立网景公司,开发的 Netscape Navigator 成为当时最流行的浏览器
  • 1994 年发明 cookie 技术
  • 1995 年招募 Brendan Eich 创造了 JavaScript
  • 1995 年发明了 SSL 技术(TLS 前身)
  • 1995 年与微软 Internet Explorer 爆发第一次浏览器大战
  • 1998 年网景在被收购前,公开了 Netscape Communicator 浏览器源码。一天后 Jamie Zawinski 注册 mozilla.org 域名,并把项目命名为 Mozilla,取意于 Mosaic(首款流行浏览器) 和 Godzilla(哥斯拉)
  • 1998 年被 AOL(America Online)收购
  • 2002 年 Mozilla 社区成员开发了 Firefox(被认为是 Netscape Navigator 精神续作)
  • 2003 年 Mozilla 基金会成立确保 Mozilla 组织以后能够独立的活下去
  • 2003 年 AOL Time Warner 解散网景
  • 因为 MDN Web Docs 主要靠 Mozilla、Google 和志愿者维护。2021 年,Open Web Docs 组织帮 MDN Web Docs 募资,微软、谷歌等大厂纷纷赞助

通过《Code Rush》这部纪录片,我相信大多前端开发都能跨越时空收获一份感动。

浏览器

Web 中的客户端,浏览器的历史也是那么的波澜壮阔,挑选一些关键事件:

  • 1989 年 Tim Berners-Lee 发明首款浏览器 WorldWildWeb
  • 1993 年 Marc Andreessen 发明首款流行浏览器 Mosaic
  • 1994 年网景公司第一款浏览器 Netscape Navigator
  • 1995 年微软发布首款浏览器 Internet Explorer,同年爆发第一次浏览器大战
  • 2003 年苹果首发 Safari
  • 2004 年 Mozilla 首发 Firefox,同年爆发第二次浏览器大战,牵扯更多公司,持续更长时间
  • 2008 年谷歌首发 Chrome
  • 之后的事大家都知道了……

网络协议

Web 前端开发中,网络协议主要涉及应用层 HTTP、SSL/TLS

HTTP 大事记:

  • 1989 年 Tim Berners-Lee 发明 HTTP
  • 1991 年,发布首个版本 HTTP/0.9
  • 1996 年,发布 HTTP/1.0
  • 1997 年,发布 HTTP/1.1
  • 2015 年,发布 HTTP/2.0
  • 2021 年初,HTTP/3.0 仍然处于草案阶段

SSL/TLS 大事记:

  • SSL 1.0 由于严重的安全缺陷从未公开发布
  • 1995 年 SSL 2.0 发布,但仍然存在一些安全缺陷
  • 1996 年 SSL 3.0 在完全重新设计后发布
  • 1999 年 TLS 1.0 发布,作为 SSL 3.0 的更新。为什么要改名呢?这其中涉及到一些历史故事,大概是这个样子:当时网景与微软正处于非常激烈、残酷的竞争中(第一次浏览器大战),由于 SSL 是网景公司发明的技术,但是存在一些安全缺陷,大家都在为 SSL 版本更新出力,微软又不想最后的成果被冠以网景的印记,所以在大家的协商下重名为 TLS
  • 2006 年,TLS 1.1 发布
  • 2008 年,TLS 1.2 发布
  • 2018 年,TLS 1.3 发布

除了 TLS 1.2 与 TLS 1.3 外,其它版本都已被弃用

Web 2.0

Web 2.0 区别 Web 1.0 在于用户参与和社交网络,强调用户产生内容、简单易用、互操作性。

Web 1.0 网页的体验非常不友好:主要是静态页面,页面几乎无法与用户交互,只要发送请求整个页面就卡住直到页面数据回来重新刷新页面。

Ajax 技术催生了 Web 2.0,是现代前端开发的基石。Ajax 技术最早起源于微软,之后被谷歌于 2004 年使用在 Gmail 产品上从而被推广开来。

总结

Web 发展史带有强烈的个人色彩:比如对微软和谷歌的着墨甚少,如果读者想了解更全面的 Web 历史还得自己另花时间探索。

若文章中有谬误之处欢迎指正!

前端常用规范链接汇总

W3C 搜索

HTML

DOM

CSS

JavaScript

HTTP 汇总

HTTP/3

参考

Web 标准

MDN Web Docs

IETF

W3C

WHATWG

Ecma

HTML wiki

CSS wiki

JavaScript wiki

ECMAScript wiki

Web browser wiki

《Code Rush》中文字幕注释版

纪录片《Code Rush》