文/韩作
以前,我们曾经将HTML代码作为资源填充到CGI应用程序中。前端开发是每个人都会做的事情。 — 90 年代的匿名程序员
被称为“HTML”的超文本标记语言将迎来 30 年的历史。在 1992 年 6 月 发布其第一个版本后,它走过了很长的路,也取得了长足的进步。
尽管在 1993 年发布,但HTML和万维网却经历了相当长的时间才获得一些关注。直到 1995 年末,万维网才开始腾飞。
那时候“上网”是一种痛苦的过程,需要相当长的时间和耐心来进行相关设置。
建立网站也并不是一件容易的事情,如果想建立商业应用程序,仍然要在Web、法国的Minitel或德国的BTX之间做出选择。
90年代-建立网站
90 年代中期,如果你想建立网站,第一个难题就是找人托管您的网站。注册域名在当时是完全不敢想象的事情。
当然如果你有自己的服务器那就另当别论了。
话说回来,当时如果找到某人来托管你的网站,他们可能只会让你通过FTP访问一台Unix 机器,该机器将存储你的HTML和一些漂亮的GIF图像以供需要它的任何人使用。
相继而出的HTML1.0、2.0 直到 3.2也都是很基本、很基础的。
JavaScript在1995年才问世,并花了一些时间被当时的两种浏览器(主要是网景和ie浏览器)所采用。
1994年推出的HTTPcookie也是如此。这造就了现在几乎所有浏览器都会提示用户必须接受的 cookie 消息的局面。
话说,如果你想建立一个有意义的交互式网站,用户不仅可以浏览,还可以与聊天等网站进行实际互动——你最终几乎都会使用CGI(“通用网关界面”)或建立你自己的web服务器软件。
在过去,建立自己的web服务器并不罕见。然而,大多数人都偏向于使用CGI。
CGI本质上做的是将HTTP请求转发到应用程序,应用程序将返回头信息和HTML代码或它提供的任何内容。
Perl、C和C++是为web服务器构建CGI应用程序的最常见的语言。但是它非常麻烦,基本上任何交互式操作都必须在服务器上完成。
由于没有cookie,会话处理和会话管理,大多是通过URL的路径组件都会使用每个用户或会话的唯一标识符来完成的。
考虑到90年代中期计算机的性能,CPU时钟速度在25到180Mhz之间,运行交互式web服务器是非常昂贵的。
升阳公司的SPARCcpu及其系统也用于这一目的,并且在当时也并不便宜。
繁荣的95、96年
95 年和 96 年可以看成是互联网的里程碑。
从雅虎 GeoCities 等免费网络托管商、eBay 等拍卖平台和 Amazon.com 等在线商店开始,互联网得到了蓬勃的发展。
特别是像Microsoft Frontpage、来自Sierra的WWW Artist和其他许多类似软件的软件,让构建自己的HTML页面并用FTP上传它们变得更容易。
新的编程语言,如PHP,Internet Information Server 的 Microsoft Active Server Pages,使构建万维网应用程序变得更容易。
Cookie和JavaScript还允许添加更多的交互性,当然浏览器很快就被执行JavaScript代码淹没,崩溃也是常有的事。
1995年发布Java小程序、1996年发布的宏媒体中流行的Flash播放器。
同样在1996年发布的还有层叠样式表(CSS)。
然而,当时建立网站仍然使用的是表格布局。所有的东西都被安置在大量的大表格和小表格中。
互联网更新并不是一件多难的事,所以遇到相当过时的网络浏览器并不罕见。从95年到98年的浏览器战争,导致了跨浏览器支持这一个令人头疼的问题,所以使用表格是最安全的方法。
如果你想搭建自己独特风格的网站,那你最终也还是会使用图像、图像映射和“装在”表格中的图像,你基本上还是整天都在摆弄表格。
考虑到95-98年大多数连接的超慢速度,即56k或7千节每秒,加载图像也需要很长时间。
所以即便用一些很棒的动画gif,每个也都需要2秒来加载。等待30秒钟的网站出现也很常见。
在当时,内容传递并不会增加用户体验,减少延迟才是。
1997 到 2000 年
在这段时间,来自旧金山的一家名为 Macromedia 的小型公司的软件产品,包括 Dreamweaver、Fireworks 和 Flash,迅速成为许多专业网站管理员的首选解决方案。
网站管理员成为了一种职业。随着CSS、JavaScript、PHP和许多其他纯粹专注于Web的编程语言的兴起,构建网站成为了一项纯粹的软件开发或工程工作。
然而,直到21世纪初,许多网站仍然是表格布局,经常出现像IE3.0这样的浏览器也并不少见。
多年的发展,网站变得越来越互动,媒体内容也越来越丰富。对于构建者和用户来说,这意味着要摆弄诸如Flash、Java小程序或真正的播放器插件。对于用户来说,这意味着必须永久地更新插件和安装新的插件。
遗憾的是,当时的下载速度仍然远低于一个可接受的水平。
第一个视频和音乐流媒体服务出现在90 年代后期,可就论质量来说,尽管是每秒超过 1 兆比特的“宽带”用户也几乎无法体验任何东西。
但至少他打开了一个新世界的大门。
1998年的 WML——移动网络的诞生和消亡
无线应用协议 (WAP) 使用无线标记语言 (WML),可以在一组卡片中组织不同的页面(称为“卡片式布局”)。
因为可以一次将多个页面传输到客户端,减少了传输的数据量,有点像今天的前端框架。鉴于移动网络运营商的高定价,以及几秒钟内产生巨额账单,WAP 和移动浏览器并没有带来多好的体验。
用户并不喜欢它。
随后,WAP 和 WML 迅速消亡。
尽管在技术上可圈可点,但它们所处的商业环境最终导致了它们的消亡。
功能更强大的移动浏览器代替了WAP。
2002 年—Windows XP、IE6和Firefox
2002年互联网领域最具代表性的事件就是 Internet Explorer 6 的 Firefox 和 Windows XP 的诞生。
在 2000 年的互联网泡沫之后,Internet 和 Web相继到了发展成熟阶段。在线商店、酒店和航班预订网站等商业网络服务开始萌芽。
随着 JavaScript、CSS 和 HTML 4.01 的成熟,Web 正在朝着被定义为“Web 2.0”的方向发展。浏览器也能够呈现和操作相对复杂的用户界面组件,如日历、自动完成文本框、交互式表格、地图等等。
随着谷歌地图等应用程序的出现,现代“Web 2.0”展示了其部署的全面应用程序的能力,而这些应用程序以前仅能作为桌面应用程序。维基百科作为一个交互式百科全书的诞生,也标志着服务器群也有了足够的数据库、存储和计算能力来运行大规模的交互式网站。
一夜之间,JavaScript突然能够操纵整个DOM,浏览器在后台有了足够的能力来呈现复杂的页面,CSS让应用程序的样式也更加舒适。
以前存在于桌面上的电子邮件应用程序已经基本上全部基于 了Web,并具有采用更具交互性的电子邮件客户端设计,电子邮件服务也变成了免费的。
随着 HTML、CSS 和 JavaScript 的每一次改进,Web也变得更加接近桌面应用程序的功能。
2008 年——移动网络的重生
移动网络自从 90 年代中期诞生以来,一直存在两个重大问题,阻碍了它的发展和普及。
- 移动网络运营商的高定价
- 未针对小屏幕和胖手指优化的网站
Apple与移动网络运营商达成协议,Wi-Fi成为移动设备的主流。
随着这些事情的变化,越来越多的网站管理员和开发人员开始构建移动网站。在移动互联网的早期,移动设备通常会被重定向到精简的移动网站。
那些保留WAP服务并慢慢过渡到新的移动网络(比如CNN),通常都会在wap.xxxxx.com这样的域名下。
诺基亚无法做到的事情,最终被苹果和谷歌掌握了:将移动网络带给大众。
2012年,当CSS媒体查询被引入后,“移动网站”开始能够使网站能够适应各种屏幕大小、设备和形式,最早的“移动网站”开始慢慢的消失了。移动浏览器变得更加强大,同时变得强大和先进的还有他们的底层设备。
当然,包括 JavaScript。
2020、2021、2022 年及以后
2020 年初,网络和网络浏览器解决了过去几十年的几乎所有挑战。
浏览器现在可以流式传输视频、处理图像和视频、适应任何类型的设备并在浏览器中运行基本上任何完整的应用程序。到目前为止,浏览器也可以运行已经移植到web汇编程序中的整个操作系统。
HTML、CSS、JavaScript、WebAssembly 和大量原创API,是当今现代应用程序的主要组件。HTML也已经远远超越了Web 浏览器,同时它也成为桌面应用程序和移动应用程序的通用标准,具有 React Native、Electron 和许多其他实现等框架。
浏览器也越来越多地集成到 ChromeOS、Android、iOS 和 Windows 等操作系统中。与此同时,越来越多的应用程序大量使用 Web 和 HTML 来显示内容和提供服务。
随着软件服务的兴起,现代企业应用程序也正在迅速过渡到浏览器,从而减轻了用户的安装负担和难搞的许可。
挑战仍然存在
回望过去,浏览器测试至今依然是一件很痛苦事。
尽管 Internet Explorer 已成为过去,但移动设备的多样性、不同的外形尺寸以及对HTML5或Web API的不同支持仍然是一个挑战。
好在,现代开发环境还是可以很轻松跟上时代的。对于Chrome、Safari 和 Firefox,这些浏览器在桌面和移动设备上的差异并不像早期的 Internet Explorer 和 Netscape Navigator 那样严重。
当今的 Web 应用程序必须处理移动网络、跨多个网络漫游的设备以及由于网络覆盖范围丢失而可能突然断开的连接。因此,网络的挑战仍然以某种形式存在着。
z-index 操作的引入也带来了弹出窗口。居中的图层阻止用户访问网站的实际内容。
随着 HTML、CSS 和 JavaScript 复杂性的增加,新的软件开发人员也越来越难以进入 Web 开发世界并跟上Web应用程序标准的标准,例如 Lighthouse 测试等性能测试。
而且,今天的一些网站很容易超过 5 兆字节甚至更多。过去的性能问题今天仍然没有得到解决。
回顾与展望
W3C的web路线图还有很多东西,W3C 继续证明它有能力解决标准化方面非常复杂的挑战。构建 Web 应用程序从未像现在这样灵活和复杂。
今天有些人倾向于区分前端和后端,而 Web 的历史已经证明这是一种有缺陷的方法。过去,因为 HTML 经常在服务器端生成,而今天,过去驻留在服务器上的许多操作(如视频和图像编辑)却在现在迅速地转移到了浏览器端。
使用像 React 这样的框架,构建好的 Web 应用程序也从未如此简单。你可以假设像 JSX、JavaScript 语法扩展这样的 React 元素也会进入浏览器的标准。就像 Flash 一样,许多其他被 W3C 标准取代的技术。
“那些不能从历史中吸取教训的人注定要重蹈覆辙。”
——温斯顿·丘吉尔爵士
(如果你感兴趣,可以关注我,查看以往的作品,希望能和大家共同成长)