HTML
HTML 的全称是 HyperText Markup Language,即超文本标记语言,这里的超文本含义主要是除了纯文本外,还可以包含链接、图片等其它类型的资源,这些资源通过元素标记(我们把这些特殊标记称之为标签)的方式定义,所以 HTML 是一门标记语言,而不是编程语言,这一点和 JavaScript、PHP、Python、Java 等编程语言不同。
HTTP 协议设计的初衷就是了为了传输 HTML 文档,目前流过通过浏览器访问的 Web 页面也几乎都由 HTML 文档构成,浏览器会根据 HTML 的语义对其进行解析和渲染,最终将页面呈现给终端用户。
作为构成 Web 的三要素之一,HTML 和 HTTP 同时诞生,目前最新的版本是 HTML 5,更多关于 HTML 语法的细节可以参考 MDN 上的 HTML 文档。
CSS
CSS 的全称是 Cascading Style Sheets,即层叠样式表,其作用是指定如何渲染 HTML 文档内定义的各种元素,这是一种将文档的结构与设计分离的理念,从而达到解耦的目的:对于同样的 HTML 文档,通过不同的 CSS 可以呈现出不同的页面外观。目前最新的 CSS 版本是 CSS 3,关于 CSS 的语法细节可以查看 MDN 上的 CSS 文档。
JavaScript
JavaScript 虽然包含了「Java」,但是和 Java 语言并没有什么关系,最早是由网景公司为浏览器开发的脚本语言,之所以叫做「JavaScript」,完全是为了蹭当时 Java 语言的热度。JavaScript 设计初衷是为了通过 DOM 操作实现动态的 HTML 文档,主要应用于浏览器客户端,不过随着时代的发展,Node.js 的横空出世,这门古老的客户端脚本语言也具备了服务器端编程的能力,此外还可用于移动端和桌面端编程,俨然成了一门「全栈语言」。JavaScript 的标准是 ECMAScript,目前主流的版本是 ECMAScript 5、ECMAScript 6(简称ES5、ES6),关于 JavaScript 的语法细节,请参考 MDN 上的 JavaScript 文档。
后端应用
在 JavaScript 具备服务器端编程能力之前,HTML、CSS、JavaScript 这些都统称为客户端技术,不具备与数据库、缓存等服务器端应用交互的能力,要构建功能完备的 Web 应用,比如电商网站、社交网络、搜索引擎、网上银行等,它们的页面内容并不是事先准备好的静态 HTML 文档,而是根据用户请求从数据库查询结果动态生成的,与静态 HTML 相对,我们把这种动态创建的内容称之为动态内容,这些在服务器端获取用户请求、查询数据库/缓存、动态构建响应内容通过前面介绍的 HTML、CSS、JavaScript 是无法实现的,需要借助服务器端编程语言,诸如 PHP、Python、Java 等才可以,我们把这些服务器端编程语言构建的应用叫做 后端应用,结合客户端编程技术(前端应用),共同实现完整的 Web 应用功能。
通常我们通过 CGI(Common Gateway Interface,通用网关接口)将 Web 服务器(Nginx、Apache)获取的用户请求通过指定模块转发给后端应用程序,然后再将后端应用动态构建的响应内容(HTML文档或者 JSON 响应)通过 CGI 返回给 Web 服务器并发送给终端用户。
常见的后端编程语言有 PHP、Python、Ruby、Java 等,有了 Node.js 的支持后,现在 JavaScript 也具备了后端编程能力,具体的细节这里就不展开了,每一门语言的学习都是一个浩大的工程。
数据发布的格式和语言
Web 应用出了返回 HTML 文档之外,还支持其它的数据格式:
1)XML
XML(eXtensible Markup Language,可扩展标记语言)是一种可按应用目标进行扩展的通用标记语言,它和 HTML 一样,都是从标准通用标记语言 SGML(Standard Generalized Markup Language)简化而来,都使用标签构成树形结构,但是 XML 比 HTML 更加灵活,因为 XML 可以自定义扩展标签。
通过使用 XML,可以使互联网数据共享变得更容易,常用于服务或接口返回数据格式的定义,很多网站的站点地图也都是基于 XML 格式的。
2)JSON
JSON(JavaScript Object Notation)是一种以 JavaScript 对象表示法为基础的轻量级数据标记语言,与 XML 相比,JSON 更轻更纯粹,并且与 JavaScript 的兼容性好,所以现在广泛应用于之前通过 XML 定义的接口返回数据格式。
3)RSS/Atom
RSS(Really Simple Syndication,简易信息聚合)和 Atom 都是发布新闻或博客等更新信息文档的格式的总称,两者都用到了 XML,用于订阅博客或新闻更新信息的 RSS 阅读器,都会支持 RSS 和 Atom。