-- 作者 谢恩铭 转载请注明出处

Web探索之旅 | 第二部分


  1. 第二部分第一课:客户端语言
  2. 第二部分第二课:服务器语言
  3. 第二部分第三课:框架和内容管理系统
  4. 第二部分第四课:数据库
  5. 第二部分第五课:响应式网站和移动应用

大家好。上一个部分 Web探索之旅 | 第一部分:什么是Web? 中,我们学习了Web的一些基本概念:

  1. 什么是Web?
  2. Internet和Web的区别
  3. Web的历史

第二部分我们会正式进入Web学习的主题了。我们会带大家了解我们平时访问的网站(Web site)是如何运作的。

首先我们来看看Web开发使用到的编程语言和数据库,一些框架和内容管理系统,还有响应式设计。这一部分会有不少原理,概念比较重要,不过我们会用形象地比喻来阐明。

第二部分第一课:客户端语言


在介绍客户端的编程语言之前,我们得首先介绍一下,什么是客户端,以及与其对应的服务器端是什么概念。

Client-Server模型

Client在英语中是“客户”,“委托人”的意思,而Server是“服务器”,“服务者”的意思。

我们去餐厅用餐,服务我们的服务生/侍者的英语也是“server”(或者也叫“waiter”或“servant”)。

在信息技术领域,这种模型就是最著名和使用最广泛的“客户机-服务器”(Client-Server)模型(也有称为“主从架构”的)。

显而易见,这个模型所表达的是一种服务的关系:

客户机是一个程序,它使用其他程序提供的服务。而提供服务的程序称为服务器。客户机请求服务,服务器则执行该服务。

我们的服务器通常是比较强大的电脑(当然了,你也可以用自己的个人电脑或者一个小小的树莓派(Raspberry PI)来搭建一个属于自己的服务器),专门服务我们的客户,一个服务器可以同时服务好多个客户。

那客户机是什么呢?就是获取服务的机器,一般就是我们自己的家用电脑啦,当然如果你用手机或平板电脑上网,那么这些设备也可以称为客户机。

在Web领域,我们主要是用客户机来浏览网页,而客户机要能浏览网页,还必须装备一个叫做“浏览器”(英语是“browser”)的软件。

例如,当你在维基百科(Wikipedia)阅读文章时,你的电脑和网页浏览器就被当做一个客户端。同时,组成维基百科的电脑、数据库和应用程序就被当做服务器。

当你的网页浏览器向维基百科请求一个指定的文章时,维基百科服务器从维基百科的数据库中找出所有该文章需要的信息,结合成一个网页,再发送回你的浏览器。

至于什么是数据库,我们下两课就会学到。

服务器的作用简单来说就是接受客户机的请求,然后把客户机需要的网页提供给客户机,客户机则在浏览器上浏览这些网页。见下图:

上图中,我们可以看到,在我们用电脑(手机,平板之类)上网的时候,同一个服务器可以服务好多个客户机。

当然了,同一台客户机也可以同时被好几个服务器服务(比如我们浏览不同网站的时候:在baidu.com,我们用的就是百度的服务器;在google.com,我们用的就是google的服务器)。就好比在餐厅里,一个服务生可以服务好几个客人,而一个客人也可以被几个服务生服务。

比较常用的浏览器有以下五个:Chrome,Firefox,IE,Safari,Opera。

  1. Chrome(中):谷歌(Google)公司推出的浏览器。可以跨平台,运行在Linux,Windows,Mac OS上。速度快,推荐使用。

  2. Firefox(左二):Mozilla基金会(开源社区)推出的浏览器。可以跨平台,运行在Linux,Windows,Mac OS上。插件丰富,推荐使用。

  3. IE(右一):Internet Explorer的缩写,微软(Microsoft)公司推出的浏览器。

  4. Safari(右二):苹果(Apple)公司推出的浏览器。

  5. Opera(左一):Opera公司推出的浏览器。

对于这五种最流行的浏览器,小编推荐Chrome和Firefox。至于Mac OS用户,其实用Safari也不错,因为速度快,不耗电,缺点是功能少,支持不全面,有些网页不能正常显示。

至于IE和Opera:

Opera从来没用过,也不知道该不该用。貌似市场份额不大,但据说速度挺快。

IE浏览器,小编觉得是史上最坑的浏览器,若不是微软将IE捆绑在Windows操作系统里发售,估计很多人都不愿意使用。

小编做过一些Web前端开发,了解过适配IE浏览器有多麻烦。

不过之前微软官方证实,旗下 Internet Explorer(IE浏览器)品牌将停止运营。微软首席营销官 Chris Capossela 公布消息称,正在全新开发的 “Project Spartan”浏览器项目将取代 IE 的位置,只是目前还在为该浏览器起名,努力打造另一个全新的浏览器品牌。

发一些好玩的图片,是对比这五个浏览器的:

调侃IE浏览器:

言归正传:

我们的服务器和客户端要正常运行来为我们呈现网页,是需要借助一些编程语言的,毕竟客户端和服务器端运行的都是程序(Program)么。

上一部分讲到的W3C(由Web的发明人Dim Berners Lee创立的Web标准化机构)就制定了一系列统一的语言,主要是客户端的。

我们所看到的每一个网页,其实归根结底都是一个个文件。而我们的浏览器可以把这些文件解析成我们人类看得懂的各种样式:图片,文字,超链接,视频,音频等等。

而这些网页文件本身是要由特定语言写成的。

客户端的语言有:HTML,CSS和JavaScript(简称JS)。

  1. HTML:HyperText Markup Language (超文本标记语言)的缩写。W3C制定的编程语言,用来表述网页的整体样式。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。HTML不是一种编程语言,而是一种标记语言 (markup language)

  2. CSS:Cascading Style Sheets(层叠样式表)的缩写。W3C制定的编程语言。既然叫“样式”表,那么它就是用于定义如何显示 HTML 元素。CSS使得HTML写成的页面不那么单调,可以有各种颜色,大小等。

  3. JavaScript:一种脚本语言。与Java语言没有关系,不要因为看到名字中包含一个Java就以为JavaScript是Java的变体或者什么。可插入HTML页面,使网页具有动态/交互性。

对于这三种语言,我们这里就不深究了。如果要学习,可以去W3C学院学习,网址是:

www.w3schools.com/

对应中文网站是:

www.w3school.com.cn/

要构建一个网页文件,HTML是必须的,CSS和JavaScript并不是必须。

也就是说,如果一个网页,光用HTML语言也可以描述(比如你可以写一个HTML的页面,只显示“Hello World!”),只不过很单调,没什么好看的样式,也不是动态网页。但是加上CSS和JS,我们的网页就丰富起来了。

我们一股脑儿讲了不少知识点,不知各位听官能消化不?其实我们还没讲静态网页和动态网页的概念,下一课【服务器语言】时再说。

为了更简单易懂,我们就用去餐厅用餐作比喻,来归纳一下上面的知识点:

  1. Restaurant(餐厅):Web大环境
  2. Client(客户):你和你的家人。
  3. Server(服务器):餐厅的服务生。
  4. Browser(浏览器):菜单。
  5. Web page(网页):菜单里的每一页

你和你的家人作为客户(相当于客户机),来到一家餐厅(相当于Web这个大环境)就餐。服务生(相当于服务器)很热情地过来招呼每个客户,问你们要点什么。

随即给你们每人一个菜单(相当于浏览器),菜单上每一页的内容就类似网页:

然后,你和你的家人各自会点不同的菜色,就类似我们在浏览网页时点击不同的内容。

最后服务生就会在大厨(服务器后台)准备好菜之后为我们奉上了。类似网页根据每个用户的不同请求所作出的动态呈现:

客户端语言的翻译


浏览器要将由HTML,CSS和JS写成的网页文件翻译成我们用户能看懂的内容。过程类似如下:

其实我们可以在我们所浏览的网页上点击鼠标右键,选择“查看网页源代码”,就可以看到被浏览器解释之前的这个页面原来的样子了:

那么我们一般的网页文件(主要由HTML语言写成,可能还包含了内嵌的CSS和JS,或者外部引用CSS和JS)的内容大致是什么样子的呢?

<!DOCTYPE HTML>
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><link rel="shortcut icon" href="https://mp.toutiao.com/static/resource/pgc_web/static/style/image/favicon.75200df.png" type="image/x-icon"/><title>手动更新 - 头条号</title><link rel="stylesheet" type="text/css" href="https://mp.toutiao.com/static/resource/pgc_web/static/pkg/common.c8103d9.css"><script type="text/javascript" charset="utf-8" src="https://mp.toutiao.com/static/resource/pgc_web/static/js/lib/pre.2dc26ef.js"></script></head><body ><div id="pagelet-header" gap="^用户profile"><div class="shead"></body >
</html>复制代码

以上就是一个网页文件的样例。可以看到它是HTML语言写成的,调用了css和javascript文件。

HTML这样的标记语言的一大特点就是有这样一对对的<>尖括号构成的结构,叫做tag(标签)。可以说HTML文件是由文本信息加标签组成,标签包裹了每一个文本,使得浏览器在翻译HTML文件时可以知道:“噢,这里是一个段落”,“噢,那里是一个标题”,“这里是一个超链接”,“那里是一张图片或一个视频”,等等:

<p>这是一个段落。</p>
<h1>这是一个标题</h1>复制代码

这样我们的浏览器解释网页的源代码之后,就为我们呈现了美轮美奂(有的比较单调)的网页了。

总结


  1. 我们的Web之所以能够正常运作,是依靠了很多编程语言。

  2. HTML,CSS,JavaScript:客户端编程语言,决定了网站的外观。其中HTML和CSS可以说是不可或缺的。JavaScript与Java没有关系,是为了给HTML网页增加动态功能。然而现在JavaScript也可被用于Web服务器开发,如Node.js (一个Javascript运行环境(runtime))。

下回预告


Web探索之旅 | 第二部分第二课:服务器语言


微信公众号「程序员联盟」ProgrammerLeague
我是谢恩铭,在巴黎奋斗的软件工程师。
我的简介
我的经历
热爱生活,喜欢游泳,略懂烹饪。
人生格言:“向着标杆直跑”

Web 探索之旅 | 第二部分第一课:客户端语言相关推荐

  1. C语言探索之旅 | 第二部分第一课:模块化编程

    C语言之父 Dennis Ritchie -- 简书作者 谢恩铭 转载请注明出处 第二部分第一课:模块化编程 上一课是C语言探索之旅 | 第一部分第十课:练习题+习作,至此,我们[C语言探索之旅]的第 ...

  2. Linux 探索之旅 | 第二部分第一课:终端 Terminal,好戏上场

    -- 作者 谢恩铭 转载请注明出处 内容简介 第二部分第一课:终端Terminal,好戏上场 第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 上一课 Linux探索之旅 | ...

  3. 【C++探索之旅】第二部分第一课:面向对象初探,string的惊天内幕

    内容简介 1.第二部分第一课:面向对象初探,string的惊天内幕 2.第二部分第二课预告:掀起了"类"的盖头来(一) 面向对象初探,string的惊天内幕 上一课<[C++ ...

  4. c语言 如何创建adt_C语言探索之旅 | 第二部分第六课:创建你自己的变量类型

    内容简介 前言 定义一个 struct 结构体的使用 结构体指针 union enum 总结 第二部分第七课预告 1. 前言 上一课是 C语言探索之旅 | 第二部分第五课:预处理 ,应该是比较轻松的. ...

  5. c 字符串数组_C语言探索之旅 | 第二部分第四课:字符串

    内容简介 前言 字符类型 显示字符 字符串其实就是字符的数组 字符串的创建和初始化 从 scanf 函数取得一个字符串 操纵字符串的一些常用函数 总结 第二部分第五课预告 1. 前言 上一课 C语言探 ...

  6. 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?

    内容简介 1.课程大纲 2.第一部分第一课:什么是C++? 3.第一部分第二课预告:C++编程的必要软件 开宗明义 亲爱的读者,您是否对C++感兴趣,但是C++看起来很难,或者别人对你说C++挺难的, ...

  7. Linux 探索之旅 | 第二部分第六课:Nano 文本编辑器和终端配置

    -- 简书作者 谢恩铭 转载请注明出处 内容简介 第二部分第六课:Nano文本编辑器和终端配置 第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 上一课 Linux探索之旅 | 第 ...

  8. C语言探索之旅 | 第二部分第六课:创建你自己的变量类型

    -- 简书作者 谢恩铭 转载请注明出处 第二部分第六课:创建你自己的变量类型 上一课C语言探索之旅 | 第二部分第五课:预处理之后,我们进入令人激动也非常有意思的一课. 众所周知,C语言是面向过程的编 ...

  9. R 语言怎么保存工作目录到当前路径_C语言探索之旅 | 第二部分第七课:文件读写...

    内容简介 前言 文件的打开和关闭 读写文件的不同方法 在文件中移动 文件的重命名和删除 第二部分第八课预告 1. 前言 上一课 C语言探索之旅 | 第二部分第六课:创建你自己的变量类型 之后,我们来学 ...

最新文章

  1. 【C#串口编程计划】C#串口协议解析 -- 文本数据
  2. METERREC万用表测量自动记录命令
  3. 打造U盘下的linux 亲测可以使用
  4. Linux_PXE服务器_RHEL7
  5. python快速编程入门飞机大战_少儿编程:使用python完成飞机大战游戏(一)
  6. Java中几种输出数组的for循环,以及循环中使用标签(非goto)
  7. 基于规则的应用程序开发实战(转载与MSDN)
  8. HDU - 2296 Ring(AC自动机+dp)
  9. Avalonia跨平台入门第四篇之Popup在uos下问题
  10. html 切换主题,html切换主题实现方案
  11. url中 斜杠如何传输_如何在父子页面中传输数据(layer)
  12. 【elasticsearch】 document 查询原理
  13. 马云再出新语录:月入一两百万很高兴,挣一二十亿很难受
  14. 矩阵等式 matrix identity(二)
  15. [USACO13NOV]Farmer John has no Large Brown Cow【状压 / 模拟】
  16. 【Java中级】(五)异常处理
  17. 2003 -服务器没有响应,PowerPoint2003
  18. java ognl表达式_常用的OGNL表达式
  19. 服务器浏览器怎么打不开网页,电脑能上qq打不开网页怎么回事?
  20. 人工智能AI的春天来临,国内惊现100多元钱的机器视觉组件,即全局曝光的高速工业相机,最高可达210帧每秒。可应用于人脸识别、机器视觉、高速运动目标的图像获取。

热门文章

  1. python游戏编程入门-python游戏编程入门
  2. python开发需要掌握哪些知识-Python的10个基础知识点,新手必须背下来!
  3. python编程做什么工作-什么样的人要学点python编程?请你对号入座
  4. python在哪里学比较好-Python学习在哪里比较好?
  5. python中文叫什么意思-python中文叫什么
  6. python编程入门p-Python是什么?简单了解pythonp-入门
  7. python培训班价格-上海Python培训学费价格是多少
  8. unity快速接入第三方sdk_直播美颜SDK实现需要具备哪些条件
  9. mybatis中的TypeAliasRegistry
  10. LeetCode Lexicographical Numbers(dfs)