不要相信任何所谓程序员说的:“HTML是用来做网页的”。
这句话正确的描述是:“HTML是用于描述超文本的,网页是一个超文本资源节点”。
HTML和网页本无联系。
建立向女神寝室的信息通信
为了简化你对复杂的Internet的理解,我们暂时把复杂的Internet抽象成:你向女生宿舍发送信号。
为了能够在断网后继续联络女神,你买来了电池和开关,然后拉了普通电线线到女神的寝室。
你的女神把小灯泡接在了电线的两端。
那么,你只需要开闭开关,就可以控制女神屋里的灯泡了。
发送信号
关闭着小灯泡1秒钟,代表发送一个0。
打开了小灯泡1秒钟,代表发送一个1。
此时你可以向女神发送任意二进制内容了。
发送文本
你只希望发送一个“Good Night”。
所以你必须想办法对“Good Night”进行编码。
'G','o','o','d'的ASCII编码是:071,111,111,100
转换成二进制就是: 0100 0001 0110 1111 0110 1111 0110 0100
使用发送二进制信号的方法发过去,你的女神需要自己解码来阅读出“Good”。
发送富文本
有一天,你希望发送“I miss you”。
为了表达心意,你希望加粗“you”,并使用红色的字体发送“miss”。
而……这一根简陋的电线似乎很难理解“加粗”和“红色”……
不过这难不倒你的。
于是机智你发送了:I <red>miss</red> <b>you</b>
同样机智的女神理解了这件事情。
你发明了一种语言
你很喜欢这种编码格式。
这是一种标记语言,于是你称其为:TGML (To Girl Markup Language)
平时你使用TGML来和你的女神通信。
TGML可以非常好的解决富文本的传输问题。
表白
终于你决定表白了。
你绘制了很美丽的心形图片,还有两个按钮:接受、拒绝。
两个按钮分别会链接到 "接受.tgml"和"拒绝.tgml"
为了描述图片,你使用了<img src="pic">
为了描述按钮,你使用了<a href="接受.tgml">
现在你发送给女神的内容,已经不只是带格式的富文本,而是带链接的富文本。
如果把带链接的富文本叫超文本。那么……
于是在这个世界上,拥有了一种能够描述超文本的语言,叫做TGML
超文本
描述超文本的方式有很多,例如:HTML,TGML,还有markdown。
HTML的诞生是为了描述超文本。
超文本的用途也很多,例如:描述一个网页,或者描述一个Word文档。
HTML文件是超文本文件。但是超文本未必是HTML。
Microsoft Word
Microsoft Word是Office的一个组件。它同样代表一个超文本资源。
如果你解压一个docx文件并仔细翻一翻,你能找到你刚才写的作业,是以XML方式记载着。
当然,描述超文本还有markdown。所以你可以使用一些工具,比如pandoc,把markdown转换成word。
故事的结局
你的女神有一个名字,叫浏览器。
你的名字叫Web服务器。
你们中间的那根线,叫HTTP。
总结
HTML用于描述超文本。描述超文本的语言有很多种。
超文本的用途很多。做网页只是其中一种。
HTML最初设计时确实是为了做网页考虑的。但HTML不是做网页的唯一工具。
探索HTML是如何呈现、渲染还有它强大的功能时,你只是在探索你的浏览器的解码能力而已。
=====小字=====
*后注:html一般不是ASCII编码,而是utf-8
*HTTP除了要传输内容,还要传输状态码,头,地址等很多信息。上面的文字只是简化了这个模型。
*<Red>不是合法的html标签