哈Ha! 我向您介绍Sergey Kucherov撰写的文章“我们从未拥有的HTML”的翻译。
今年是Berners-Lee开始开发HTML以来的30年。 从那时起,我们就走了很长的路要走,从对新技术的钦佩到对互联网成瘾和审查制度的对待,再到结束。 互联网给我们带来了什么麻烦,密码被盗,身份盗窃,计算机病毒,蠕虫,甚至现在是勒索软件病毒。 您是否曾经想过为什么网络仍然如此不稳定和脆弱? 在这条漫长的道路上的某个地方,我们走错了路? 让我们做对。
1993年发布的HTML 1.0仅包含13个元素(仅计算到今天还存在的元素):
a, address, base, dd, dir, dl, dt, h1..h6, li, p, plaintext, title, ul
当然,其中最重要的是“锚”(a)。 由他来定义负责标准标题中前两个字母(超文本)的功能。 没有锚点(或链接),HTML将只是另一种文本标记语言。 正是这种能力可以使用通用资源定位器(URL)将用户发送到世界上的任何文档,并且这种令人称奇的现象被称为万维网。 两年后,HTML中添加了几个有用的元素: html
, head
, body
以及用于创建表单,表格和图像的元素。

最后一个元素,可能在Internet历史上扮演了最重要的角色。 通过使浏览器不仅可以显示文本,还可以显示图片,我们使新技术不仅对一小撮科学家和发烧友,而且对数百万普通用户都具有吸引力。 我们可以肯定地说,这项创新甚至推动了该行业提高互联网的速度及其对大众用户的可访问性。 但是,此HTML元素的另一个功能具有历史意义。 看这里:
<img src="http://ibm.com/ibm-logo.gif" />
由于不可能在文本文件中嵌入二进制图像(至少在那时),因此img
元素配备了一个属性,该属性指示浏览器可以在其中找到所需文件的位置。 这个简单的想法是伟大发明的关键。
我们从未转过的钥匙。
HTML 2.0于1995年11月发布。 每个人都对新功能感到满意,并且可能是为什么没有人提出这样的建议:为什么我们不让所有其他HTML元素也使用此属性呢? 想象一下:
<h1 src="/website/info/title"> </h1>
此代码意味着标头的内容应从此URL加载。 这么小的元素可能没有意义,但是div
或article
呢?
<article src="/parts/article/blog1298" />
好吧,现在有意义吗? 我知道在1993年,互联网的速度不如现在。 新功能已经占用了大多数现有带宽,并且HTTP达不到标准。 但是,没有理由在标准中阻止这种可能性。
现在,您可能会考虑该属性可能对WWW的未来产生什么影响? 就其本身而言,也许没有那么大。 但是,如果我们再增加一次机会,那么结果可能会与我们现在所获得的结果大不相同。 当浏览器显示页面时,它将HTML代码转换为位于内存中的文档对象模型(DOM)。 在浏览器收到将其替换为另一个HTML文档的请求之前,该模型保持不变。 即使到了1993年,该软件也仍然无法正常运行。 那年,当Netscape Navigator取代Mosaic浏览器时,Lotus 123 已有 10年历史,而VisiCalc甚至更大。 根据用户输入的数据来计算文档状态的想法已经众所周知,并且很容易实现。 不幸的是,没有人敢于将其应用于浏览器。 想象一下,如果HTML 2.0有这个机会会发生什么:
<div id="name">George</div> <h1>Welcome, $name</h1>
如果在电子表格中可以引用其他单元格的内容,则HTML文档可以允许使用引用其他元素值的变量。 例如,以上代码将显示为Welcome,George标头。 变量在URL中可能更加有用:
<article src="http://server.com/blog/$name"></article>
上面的代码将从URL http://server.com/blog/George
下载文章的内容。 并且,如果name
元素的值更改,浏览器将仅更新该元素的内容。 与现在一样,服务器负责HTML代码的逻辑和生成。 在这种情况下,无需使用AJAX和JavaScipt。 这项新功能(至今尚未有人提出)将使实现带有动态提示的搜索框变得容易:
<input list="find" type="text" id="term" /> <datalist id="find" src="http://server.com/search/$term" />
显然,评估表达式要比执行嵌入式程序代码安全得多,因为嵌入式程序代码的后果很难预测。 为了使HTML与电子表格更加兼容,您需要添加使用功能的功能:
@CONCATENATE(first,", ",last);

不需要JavaScript,影子DOM或其他昂贵且极其不安全的功能。 浏览器会根据用户输入自动计算DOM中的更改。 今天,我们称之为反应式编程。 可惜我们花了26年的时间才想到这个。 现在尝试实施现在为时已晚?
您可以假设HTML5 + CSS3 + JS的最新版本足以满足现代需求。 我不这么认为。 我们甚至仍在努力创建一个简单的用户界面,并且被迫使用令人困惑的JS库(如Angular)。 Web组件呢? 他们将能够使Web编程更快,更容易和更安全吗? 可能吧 也许不是。 我所知道的是,在我们从未有过的HTML标准之上,组件非常易于实现。 让我向您介绍一下define
元素:
<head> <define tag=“login” src=“http://server.com/components/login”> <define tag=“footer” src=“http://server.com/components/footer”> </head> <body> <login toremember="yes" /> ... <footer /> </body>
仅此而已。 在组件URL中指定的地址处加载的资源是常规HTML文件。 它可能包含变量,函数以及与其他组件的链接。 这样的Web组件不仅可以轻松地在一个网站上使用,还可以作为Internet上的标准库轻松使用。 HTTP / 2协议引入了许多有用的功能,这些功能将使新的HTML发挥其全部潜力。 可以保留JavaScript,但是在大多数情况下,将不需要JavaScript。 您上次何时需要在电子表格中使用宏?