Web前端技术的发展是否使整个Web偏离了万维网的原初设计?

万维网的存在标志着计算机间无法相互沟通时代的终结。

其设计的初衷是,不需要另外一个系统的访问权,仅仅是一个超文本链接就可以把人们带到一个巨大的、毫无限制的世界。

万维网最明显的标识是——文档,早期的浏览器甚至是作为一个编辑器来开发的。正因为万维网的文档特性,我们访问的万维网页面才叫做“网页”,而不是“应用程序”。

Web前端的发展,是离不开JavaScript标准化进程和其生态圈的。JavaScript曾一度被视作一门玩具语言,而真正了解JavaScript的人才知道,JS是一门基于原型、多范式的动态脚本语言,并且支持面向对象、命令式和函数式编程风格的强大编程语言。

Angular、React、Vue大行其道,npm、yarn打得火热,webpack、gulp不分伯仲,FP、FRP也在默默耕耘,这些动态,都在告诉前端开发者一件重要的事情:Web正在走向客户端化,正在应用化。多页面已经被单页面取代,a标签的href已经被click取代,弹出的窗口变成了在页面上的Modal,JS的UI状态已经越发难管理。

对于Web前端来说,这无疑是好事,因为前端技术几乎可以做任何事情了,从网页到应用程序再到后端、数据库,甚至物联网,这门语言的发展已经壮大。

但是这对万维网来说呢?

万维网的重要目标是“连接”,而Web应用天生是一种将连接封闭的人机交互程序(点名批评小程序)。

万维网背后的基本原则是,一旦某个地方的某个人准备了一个文档、数据库、图片、声音、影像或者一次交互动画的某个阶段的屏幕,那么它应当是任何国家的任何人用任何类型的计算机都能访问到的(当然还取决于授权)。

谈到万维网,就不得不说到爬虫及各种搜索引擎,而一旦涉及到搜索引擎,必不可少的就是SEO(搜索引擎优化),Web客户端化对SEO的支持有一种天然的缺失。

AJAX(异步JavaScript和XML)这一概念的兴起,是Web走向应用化的第一步。这个阶段的Web,SEO的支持还是原生的,大部分的工作仍然由后端完成,前端仅仅处理一些交互,并不涉及到业务逻辑。这个阶段最流行的框架是jQuery。第二个阶段的Web,则是由MV*类框架撑起,但是直到现在,还没有一个框架的生态圈可以超过jQuery。在可预见的未来,FP和FRP将成为开发大型Web应用的解决方案。在我看来,在FP和FRP之后,类似prolog的逻辑编程语言才是人机交互编程的最终走向(prolog的核心是告诉计算机事实,然后由计算机自己构建知识图谱)。

Web应用化还有一个十分显著的特点——去DOM化,无论是react还是vue,都隐藏了大量的DOM操作细节,开发者转而只用操作数据。而正因为这种不用操心DOM,专心数据的特性,也让开发者过渡到函数式编程显得十分容易。

去DOM化产生的后果就是所有HTML将不能参与SEO,即无法被搜索引擎检索到。HTML是一种简单的超文本语言,是计算机能够了解的通用基本语言。HTML现在已经成为了万维网最根本的基础,各种类型的文档——影像、CAD、声音、动画以及可执行程序都可以包含进HTML中。HTML是Web当之无愧的万国语。

万维网在刚建立的时候,并没有得到相关结构的支持,而是由民间建立的:

将万维网放在alt.hypertext新闻组发布是一个具有转折意义的事件。它把万维网展现在一个非常挑剔的学术界面前。我开始收到那些尝试安装该软件的人士的电子邮件。他们会给我寄来鼓掌报告,以及“如果……岂不更好”的报告。偶尔也会有这样的消息:“嘿,我刚建立了一个服务器,真是妙极了。这是我的地址”。
伴随每一条新的消息,我会在info.cern.ch服务器里给每个地址输入一个超文本连接,这样那些访问CERN站点的其他人就能链接到那种地方。从那时起,因特网上感兴趣的人士提出了各种反馈、鼓励、想法、源代码,以及在本地难以找到的道义支持。正是因特网上的众人以真正民间的方式建立了万维网。

回到我们的问题:

Web前端技术的发展是否使整个Web偏离了万维网的原初设计?

答案是否定的。

万维网的目的是连接一切,只是囿于当时的技术条件,没有“在线应用”这么一个说法。Web前端应用化,正是补充了这一漏洞。设想一下,所有的应用程序都跑在云端,并且可以由搜索引擎检索到,你的个人计算机不需要安装任何低频应用程序,难到不是一件好事吗?

针对当下Web技术与搜索引擎SEO无法兼容的问题,已经有了诸多解决方案。在搜索引擎端,Google已经可以动态执行JavaScript然后分析HTML;在客户端,已经出现了成熟的服务器端渲染(SSR)和通过判断user-agent对爬虫返回不同页面的技术。

Web前端技术的发展使万维网更加丰富,而这条路,还仅仅是开始。

编辑于 2017-06-25

文章被以下专栏收录