内容简介

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

2、第二部分第二课预告:服务器语言


第二部分: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学院学习,网址是:

http://www.w3schools.com/

对应中文网站是:

http://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))。


第二部分第二课预告

今天的课就到这里,一起加油吧!

下一部分我们学习:服务器语言


程序员联盟 微信公众号

*您若觉得本文不错,请点击画面右上角《···》按钮分享

*新朋友请关注「程序员联盟」微信搜公众号  ProgrammerLeague

程序员联盟官网:

http://coderunity.com/

小编微信号: frogoscar

小编邮箱:    enmingx@gmail.com

小编QQ号:  379641629

程序员联盟QQ群:413981577

程序员联盟微信群:先加我微信

头条网自媒体“程序员联盟”:

http://www.toutiao.com/m3750422747/

小编的51CTO博客,CSDN博客,博客园,新浪博客和开源中国博客
http://4526621.blog.51cto.com

http://blog.csdn.net/frogoscar

http://www.cnblogs.com/frogoscar

http://blog.sina.com.cn/frogoscar

http://my.oschina.net/frogoscar/blog

【打赏小编】

觉得文章对您有帮助,请纪念小编的辛勤劳动,扫描二维码打赏小编,谢谢!

支付宝

Paypal

【Web探索之旅】第二部分第一课:客户端语言的更多相关文章

  1. 【Web探索之旅】第三部分第一课:服务器

    内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...

  2. 【Web探索之旅】第三部分第一课:server

    wx_fmt=jpeg" alt="0? wx_fmt=jpeg" style="height:auto"> 内容简单介绍 .第三部分第一课:s ...

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

    内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

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

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

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

    内容简介 1.第二部分第一课:终端Terminal,好戏上场 2.第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 随着第一部分的结束,我们进入了第二部分(小编你这好像是废话. ...

  6. 【Web探索之旅】第一部分:什么是Web?

    内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课 ...

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

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

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

    内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢!   开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱 ...

  9. 【Web探索之旅】第四部分:Web程序员

    内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...

随机推荐

  1. csdn肿么了,这两天写的博文都是待审核

    昨天早上8点写了一篇博文,然后点击发表,结果系统显示"待审核".于是仅仅好qq联系csdn的客服,等到9点时候,csdn的客服上线了,然后回复说是链接达到5个以上须要审核,于是回到 ...

  2. C语言中字符串如何转换为二进制、八进制、十进制、十六进制

    在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...

  3. iOS_UIButton 简单操作

    UIButton 风格 typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, // no button type UIB ...

  4. 采用 audio 和 embed 实现浏览器的兼容性页音频播放

    采用 audio 和 embed 实现浏览器的兼容性页音频播放 采用 audio 和 embed 实现浏览器的兼容性页音频播放 学习参考源代码如下所示: function playSound() { ...

  5. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...

  6. 学习 easyui 之二:jQuery 的 ready 函数和 easyloader 的加载回调函数

    Ready 事件不一定 ready 使用 easyloader 的时候,必须要注意到脚本的加载时机问题,easyloader 会异步加载模块,所以,你使用的模块不一定已经加载了.比如下面的代码. &l ...

  7. Learning To Rank之LambdaMART前世今生

    1.       前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...

  8. Jsoup 抓取和数据页 认识HTTP头

    推荐一本书:黑客攻防技术宝典.Web实战篇  :       顺便留下一个疑问:能否通过jsoup大量并发訪问web或者小型域名server,使其瘫痪?其有用jsoup熟悉的朋友能够用它解析url来干 ...

  9. [TroubleShooting]&#39;trn\bak&#39; is incorrectly formed. SQL Server cannot process this media family.

     SQL Server online consultants came across an interesting scenario where one of our client was una ...

  10. EXE文件结构和读取方法

    一.EXE文件概念 EXE File英文全名executable file .译作可运行文件,可移植可运行 (PE) 文件格式的文件,它能够载入到内存中.并由操作系统载入程序运行,是可在操作系统存储空 ...