Skip to content

1.1 附属的时代

1990 年诞生了世界上的第一款浏览器,HTML 作为超文本标记语言被用于在网页中展示文字,但此时的 HTML 仅仅是实验室产品。1994 年,网景公司成立并开发了一款名为 Navigator 的浏览器,这款浏览器进入市场后迅速得到了大众认可,HTML 技术得到了推广。

Navigator 浏览器诞生后,CSS、HTML2 和 W3C 联盟相继出现。CSS 誓要给枯燥的图文世界带来一些色彩;W3C 联盟则作为 Web 技术的官方代表,致力于制定 Web 技术标准,要求浏览器厂商按照统一标准来实现。

这里提到的 Web 是万维网(World Wide Web)的统称,W3C 就是万维网联盟。Web 属于互联网的一个子类,需要依赖浏览器访问和展示信息。把围绕浏览器产生的相关技术统称为 Web 技术。因此,HTML 和 CSS 都属于 Web 技术范畴。

此时的浏览器网页以 HTML 为主,是纯静态的网页,并且是“只读”的。用户只能被动接收信息,没有变化也没有交互,因此将这个时代称为 Web 1.0 时代。

随着网页交互要求的提高,1995 年,网景公司的工程师 BrendanEich 花了 10 天的时间设计了 JavaScript(简称 JS)语言,并将其内嵌到浏览器中。JavaScript 提供了操作 HTML 的功能,这使得一成不变的网页有了“动起来”的可能。

在此期间,微软公司开发出了另一款浏览器 —— IE 浏览器。JavaScript 出现后微软公司又开发了一款脚本语言 JScript 嵌入 IE 浏览器中。因为两家公司的脚本实现存在差异,所以一个网页不能同时在两款浏览器中运行,这就迫使网站不得不“二选一”,直接引发了第一次浏览器大战。

这次大战推动了浏览器的创新和升级。最终的结果是 IE 浏览器战胜 Navigator 浏览器,并且占据了 96% 的市场份额。不过网景公司为了确保 JavaScript 的市场领导地位,已经率先将其提交到 ECMA 进行标准化。

随后 ECMA 以 JavaScript 为基础制定了 ECMAScript 1.0 标准规范(目前已经更新到 ES6+)。这也是网景公司战败但是 JavaScript 还能继续发展的原因。

至此,Web 领域由 W3C 和 ECMA 两大标准组织推进,Web 开始了快速发展。

1.1.1 前端的诞生

在 Web 1.0 时代,网页是纯静态的,并没有前端和后端之分。随着以 ASP、JSP 和 PHP 为代表的动态页面技术的诞生,网站能够从数据库中获取数据并展示出来,因此网站开发逐渐被划分为前端和后端两个方向。

后端开发的主要任务是编写业务逻辑和处理数据;前端开发的工作相对来说比较简单,主要是对文字、图片做排版和样式修饰,并没有非常复杂的交互。

以 PHP 为例,网站代码被嵌在一个 MVC 框架中。MVC 即模型(Modal)、视图(View)和控制器(Controller),其中视图部分代表 HTML 页面。前端开发者将静态页面交给后端开发者,后端开发者将其修改为 PHP 模板放到框架中。此时的前端只是 PHP 的一部分。

正因为如此,前端给人们的固有印象就是技术难度小、门槛低。前端开发者也被戏称为“页面仔”,长期处于技术鄙视链的底端。

随着互联网的快速发展,Web 应用的体量越来越大,前端和后端的代码揉在一块的弊端越来越明显 —— 高耦合、互相影响、难以分模块,共同调试和维护一套代码变得越来越困难。

于是前端的需求高涨,企业需要能解决复杂问题和实现复杂功能的专业的前端工程师。在这个背景下前端从业者明显增加,前端进入了增长期。

随着 HTML 5 的出现,移动互联网逐渐成为潮流,手机的硬件和性能也越来越好。用户使用手机不再只看图文,而是希望在手机上通过滑动手指就能完成任何事情。于是有了购物、视频、游戏等 App,这些变化推动前端进入爆发期。

尽管如此,前端依然离不开后端,并且是后端项目的一部分。前端页面需要动态数据,因此不管开发了什么功能,最后一步还是要交给后端工程师完成,把页面套在他们的模板中。

1.1.2 jQuery 实现交互

在 Web 1.0 时代,前端的“技术性”体现在 jQuery 上。

在一些交互比较复杂的页面中,需要大量操作 DOM 来实现功能。如果需要修改某个层级比较深的元素,就需要层层寻找,甚至还要遍历。原生的 JavaScript DOM API 因为以下两方面的原因使用效率很低。

  1. 不同浏览器的 API 存在兼容性。
  2. 原生 API 使用烦琐,没有“链式”和“批量”这样的快捷操作。

在这种情况下,前端迫切需要一种统一、使用简单、操作效率更高的方式来代替原生 API。此时 jQuery 登场了。

没有经历过早期前端开发的程序员难以体会 jQuery 的出现带来的巨大的便利。在没有 jQuery 时,操作 DOM 全靠原生 API,因为没有其他的方式。因为大家都采用这种形式,所以也不觉得效率低,好像本就该如此。

jQuery 带来了极简 API,相信使用过的人都会惊呼:怎么能这么简单!

使用 jQuery 操作 DOM 的效率比使用原生 API 操作 DOM 的效率至少提高了 1 倍。这并不是 jQuery 创造了一个代替原生 API 的东西,而是将原生 API 包装起来,采用一种更简单、直观的方式实现调用。特别是 jQuery 提供的链式调用和批量操作,不仅简单直观,还容易理解,所以前端开发者不愿意再用原生 API 操作 DOM。

jQuery 最强大的功能还是插件系统 —— 可以将一个功能模块封装成插件以供复用。

jQuery 的插件生态非常丰富。在有的网站上可以找到一些常用的组件(如日历、轮播图、弹框、各种动画、特效),这些是全球开发者共同的心血,可以完全免费使用,因此大大提高了开发效率。

jQuery 插件算是最早意义上的组件化 —— 无数的物料以 jQuery 插件的形式在全世界分享。对于此时的前端而言,这是 jQuery 的时代。