Web探索之旅 | 第二部分第一課:客戶端語(yǔ)言

作者 謝恩銘鸠姨。
轉(zhuǎn)載請(qǐng)注明出處。
原文:http://www.reibang.com/p/c59adf8ae2f5


《Web探索之旅》全系列

內(nèi)容簡(jiǎn)介


  1. 前言
  2. 客戶端語(yǔ)言
  3. 總結(jié)
  4. 第二部分第二課預(yù)告

1. 前言


上一課 Web探索之旅 | 第一部分:什么是Web必逆? 中,我們學(xué)習(xí)了 Web 的一些基本概念:

  1. 什么是 Web?
  2. Internet 和 Web 的區(qū)別
  3. Web 的歷史

這一課開始岭接,我們會(huì)帶你了解我們平時(shí)訪問的網(wǎng)站(Web site)是如何運(yùn)作的。

首先我們來看看 Web 開發(fā)使用到的編程語(yǔ)言臼予,數(shù)據(jù)庫(kù)鸣戴,一些框架和內(nèi)容管理系統(tǒng),還有響應(yīng)式設(shè)計(jì)粘拾。會(huì)有不少原理和重要的概念窄锅,不過我們會(huì)用形象的比喻來闡明。

2. 客戶端語(yǔ)言


在介紹客戶端的編程語(yǔ)言之前缰雇,我們得首先介紹一下入偷,什么是客戶端,以及與其對(duì)應(yīng)的服務(wù)器端是什么概念械哟。

Client-Server 模型

Client 表示“客戶疏之,委托人”,Server 表示“服務(wù)器暇咆,服務(wù)者”锋爪。

我們?nèi)ゲ蛷d用餐,服務(wù)我們的服務(wù)生 / 侍者的英語(yǔ)也是 server(或者也叫 waiter)爸业。

在信息技術(shù)領(lǐng)域其骄,這種模型就是最著名和使用最廣泛的“客戶機(jī)-服務(wù)器”(Client-Server)模型(也有稱為“主從架構(gòu)”的)。

我們之前的課程已經(jīng)介紹過 Client-Server 模型了扯旷,但是我們?cè)賮磉M(jìn)行更形象的介紹拯爽。

顯而易見,這個(gè)模型所表達(dá)的是一種服務(wù)的關(guān)系:

客戶機(jī)是一個(gè)程序薄霜,它使用其他程序提供的服務(wù)某抓。而提供服務(wù)的程序稱為服務(wù)器纸兔。客戶機(jī)請(qǐng)求服務(wù)否副,服務(wù)器則執(zhí)行該服務(wù)汉矿。

我們的服務(wù)器通常是比較強(qiáng)大的電腦(當(dāng)然了,你也可以用自己的個(gè)人電腦或者一個(gè)小小的樹莓派(Raspberry PI)來搭建一個(gè)屬于自己的服務(wù)器)备禀,專門服務(wù)我們的客戶洲拇,一個(gè)服務(wù)器可以同時(shí)服務(wù)好多個(gè)客戶。

那客戶機(jī)是什么呢曲尸?就是獲取服務(wù)的機(jī)器赋续,一般就是我們自己的家用電腦啦,當(dāng)然如果你用手機(jī)或平板電腦上網(wǎng)另患,那么這些設(shè)備也可以稱為客戶機(jī)纽乱。

在 Web 領(lǐng)域,我們主要是用客戶機(jī)來瀏覽網(wǎng)頁(yè)昆箕,而客戶機(jī)要能瀏覽網(wǎng)頁(yè)鸦列,還必須裝備一個(gè)叫作瀏覽器(browser)的軟件。

例如鹏倘,當(dāng)你在維基百科(Wikipedia)閱讀文章時(shí)薯嗤,你的電腦和網(wǎng)頁(yè)瀏覽器就被當(dāng)做一個(gè)客戶端。同時(shí),組成維基百科的電腦、數(shù)據(jù)庫(kù)和應(yīng)用程序就被當(dāng)做服務(wù)器兴溜。

當(dāng)你的網(wǎng)頁(yè)瀏覽器向維基百科請(qǐng)求一個(gè)指定的文章時(shí)朽褪,維基百科服務(wù)器從維基百科的數(shù)據(jù)庫(kù)中找出所有該文章需要的信息,結(jié)合成一個(gè)網(wǎng)頁(yè),再發(fā)送回你的瀏覽器。

至于什么是數(shù)據(jù)庫(kù),我們之后的課程會(huì)學(xué)到归园。

服務(wù)器的作用簡(jiǎn)單來說就是接受客戶機(jī)的請(qǐng)求,然后把客戶機(jī)需要的網(wǎng)頁(yè)提供給客戶機(jī)稚矿,客戶機(jī)則在瀏覽器上瀏覽這些網(wǎng)頁(yè)庸诱。見下圖:

上圖中,我們可以看到晤揣,在我們用電腦(手機(jī)桥爽,平板之類)上網(wǎng)的時(shí)候,同一個(gè)服務(wù)器可以服務(wù)好多個(gè)客戶機(jī)昧识。

當(dāng)然了钠四,同一臺(tái)客戶機(jī)也可以同時(shí)被好幾個(gè)服務(wù)器服務(wù)(比如我們?yōu)g覽不同網(wǎng)站的時(shí)候:在 baidu.com,我們用的就是百度的服務(wù)器;在 google.com缀去,我們用的就是 Google 的服務(wù)器)侣灶。就好比在餐廳里,一個(gè)服務(wù)生可以服務(wù)好幾個(gè)客人缕碎,而一個(gè)客人也可以被幾個(gè)服務(wù)生服務(wù)褥影。

比較常用的瀏覽器有以下五個(gè):Chrome,F(xiàn)irefox咏雌,IE凡怎,Safari,Opera赊抖。

  1. Chrome(中):谷歌(Google)公司推出的瀏覽器统倒。可以跨平臺(tái)氛雪,運(yùn)行在 Linux房匆,Windows,macOS 等操作系統(tǒng)上注暗。速度快坛缕,推薦使用墓猎。

  2. Firefox(左二):Mozilla 基金會(huì)(開源社區(qū))推出的瀏覽器捆昏。可以跨平臺(tái)毙沾,運(yùn)行在 Linux骗卜,Windows,macOS 等操作系統(tǒng)上左胞。插件豐富寇仓,推薦使用。

  3. IE(右一):Internet Explorer 的縮寫烤宙,微軟(Microsoft)公司推出的瀏覽器遍烦。

  4. Safari(右二):蘋果(Apple)公司推出的瀏覽器。

  5. Opera(左一):Opera 公司推出的瀏覽器躺枕。

對(duì)于這五種最流行的瀏覽器服猪,我推薦 Chrome 和 Firefox。至于 macOS 用戶拐云,其實(shí)用 Safari 也不錯(cuò)罢猪,因?yàn)樗俣瓤欤缓碾姴娲瘢秉c(diǎn)是功能少膳帕,支持不全面,有些網(wǎng)頁(yè)不能正常顯示薇缅。

至于 IE 和 Opera:

Opera 我從來沒用過危彩,也不知道該不該用攒磨。貌似市場(chǎng)份額不大,但據(jù)說速度挺快汤徽。

IE 瀏覽器咧纠,我個(gè)人覺得是這幾個(gè)里面最差的瀏覽器,若不是微軟將 IE 捆綁在 Windows 操作系統(tǒng)里發(fā)售泻骤,估計(jì)很多人都不愿意使用漆羔。

不過現(xiàn)在微軟也在慢慢用新的瀏覽器 Edge 來替代 IE 瀏覽器了。

我們的服務(wù)器和客戶端要正常運(yùn)行來為我們呈現(xiàn)網(wǎng)頁(yè)狱掂,是需要借助一些編程語(yǔ)言的演痒,畢竟客戶端和服務(wù)器端運(yùn)行的都是程序(program)么。

上一課講到的 W3C(由 Web 的發(fā)明人 Dim Berners Lee 創(chuàng)立的 Web 標(biāo)準(zhǔn)化機(jī)構(gòu))就制定了一系列統(tǒng)一的語(yǔ)言趋惨,主要是客戶端的鸟顺。

我們所看到的每一個(gè)網(wǎng)頁(yè),其實(shí)歸根結(jié)底都是一個(gè)個(gè)文件器虾。而我們的瀏覽器可以把這些文件解析成我們?nèi)祟惪吹枚母鞣N樣式:圖片讯嫂,文字,超鏈接兆沙,視頻欧芽,音頻等等。

而這些網(wǎng)頁(yè)文件本身是要由特定語(yǔ)言寫成的葛圃。

客戶端的語(yǔ)言有:HTML千扔,CSS 和 JavaScript(簡(jiǎn)稱 JS)。

  1. HTML:HyperText Markup Language (超文本標(biāo)記語(yǔ)言)的縮寫库正。W3C 制定的編程語(yǔ)言曲楚,用來表述網(wǎng)頁(yè)的整體樣式∪旆“超文本”就是指頁(yè)面內(nèi)可以包含圖片龙誊、鏈接,甚至音樂喷楣、程序等非文字元素趟大。HTML 不是一種編程語(yǔ)言,而是一種標(biāo)記語(yǔ)言(markup language)抡蛙。

  2. CSS:Cascading Style Sheets(層疊樣式表)的縮寫护昧。W3C 制定的編程語(yǔ)言。既然叫“樣式”表粗截,那么它就是用于定義如何顯示 HTML 元素惋耙。CSS 使得 HTML 寫成的頁(yè)面不那么單調(diào),可以有各種顏色,大小绽榛,等等湿酸。

  3. JavaScript:一種腳本語(yǔ)言。不要因?yàn)榭吹矫种邪粋€(gè) Java 就以為 JavaScript 是 Java 的變體或者什么灭美,JavaScript 和 Java 沒有任何關(guān)系推溃。可插入 HTML 頁(yè)面届腐,使網(wǎng)頁(yè)具有動(dòng)態(tài) / 交互性铁坎。

對(duì)于這三種語(yǔ)言,我們這里就不深究了犁苏。如果要學(xué)習(xí)硬萍,可以去 W3C 學(xué)院學(xué)習(xí),網(wǎng)址是:http://www.w3schools.com 围详。對(duì)應(yīng)中文網(wǎng)站是:http://www.w3school.com.cn 朴乖。

要構(gòu)建一個(gè)網(wǎng)頁(yè)文件,HTML 是必須的助赞,CSS 和 JavaScript 并不是必須买羞。

也就是說,如果一個(gè)網(wǎng)頁(yè)雹食,光用 HTML 語(yǔ)言也可以描述(比如你可以寫一個(gè) HTML 的頁(yè)面畜普,只顯示“Hello World !”),只不過很單調(diào)婉徘,沒什么好看的樣式漠嵌,也不是動(dòng)態(tài)網(wǎng)頁(yè)。但是加上 CSS 和 JS盖呼,我們的網(wǎng)頁(yè)就豐富起來了。

我們一股腦兒講了不少知識(shí)點(diǎn)化撕,不知各位聽官能消化不几晤?其實(shí)我們還沒講靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)的概念,下一課再說植阴。

為了更簡(jiǎn)單易懂蟹瘾,我們就用去餐廳用餐作比喻,來歸納一下上面的知識(shí)點(diǎn):

  1. Restaurant(餐廳):Web 大環(huán)境掠手。
  2. Client(客戶):你和你的家人憾朴。
  3. Server(服務(wù)器):餐廳的服務(wù)生。
  4. Browser(瀏覽器):菜單喷鸽。
  5. Web page(網(wǎng)頁(yè)):菜單里的每一頁(yè)众雷。

你和你的家人作為客戶(相當(dāng)于客戶機(jī)),來到一家餐廳(相當(dāng)于 Web 這個(gè)大環(huán)境)就餐。服務(wù)生(相當(dāng)于服務(wù)器)很熱情地過來招呼每個(gè)客戶砾省,問你們要點(diǎn)什么鸡岗。

隨即給你們每人一個(gè)菜單(相當(dāng)于瀏覽器),菜單上每一頁(yè)的內(nèi)容就類似網(wǎng)頁(yè):

然后编兄,你和你的家人各自會(huì)點(diǎn)不同的菜色轩性,就類似我們?cè)跒g覽網(wǎng)頁(yè)時(shí)點(diǎn)擊不同的內(nèi)容。

最后服務(wù)生就會(huì)在大廚(服務(wù)器后臺(tái))準(zhǔn)備好菜之后為我們奉上了狠鸳。類似網(wǎng)頁(yè)根據(jù)每個(gè)用戶的不同請(qǐng)求所作出的動(dòng)態(tài)呈現(xiàn):

客戶端語(yǔ)言的翻譯


瀏覽器要將由 HTML揣苏,CSS 和 JS 寫成的網(wǎng)頁(yè)文件翻譯成我們用戶能看懂的內(nèi)容。過程類似如下:

其實(shí)我們可以在我們所瀏覽的網(wǎng)頁(yè)上點(diǎn)擊鼠標(biāo)右鍵件舵,選擇“查看網(wǎng)頁(yè)源代碼”舒岸,就可以看到被瀏覽器解釋之前的這個(gè)頁(yè)面原來的樣子了:

那么我們一般的網(wǎng)頁(yè)文件(主要由 HTML 語(yǔ)言寫成,可能還包含了內(nèi)嵌的 CSS 和 JS芦圾,或者外部引用 CSS 和 JS)的內(nèi)容大致是什么樣子的呢蛾派?

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link rel="shortcut icon"  type="image/x-icon"/>
    <title>手動(dòng)更新 - 頭條號(hào)</title>
    <link rel="stylesheet" type="text/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>

以上就是一個(gè)網(wǎng)頁(yè)文件的樣例「錾伲可以看到它是用 HTML 語(yǔ)言寫成的洪乍,調(diào)用了 css 和 javascript 文件。

HTML 這樣的標(biāo)記語(yǔ)言的一大特點(diǎn)就是有這樣一對(duì)對(duì)的 <> 尖括號(hào)構(gòu)成的結(jié)構(gòu)夜焦,叫做 tag(標(biāo)簽)壳澳。可以說 HTML 文件是由文本信息加標(biāo)簽組成茫经,標(biāo)簽包裹了每一個(gè)文本巷波,使得瀏覽器在翻譯 HTML 文件時(shí)可以知道:“噢,這里是一個(gè)段落”卸伞,“噢抹镊,那里是一個(gè)標(biāo)題”,“這里是一個(gè)超鏈接”荤傲,“那里是一張圖片或一個(gè)視頻”垮耳,等等:

<p>這是一個(gè)段落。</p>
<h1>這是一個(gè)標(biāo)題</h1>

這樣我們的瀏覽器解釋網(wǎng)頁(yè)的源代碼之后遂黍,就為我們呈現(xiàn)了美輪美奐(有的比較單調(diào))的網(wǎng)頁(yè)了终佛。

3. 總結(jié)


  1. 我們的 Web 之所以能夠正常運(yùn)作,是依靠了很多編程語(yǔ)言雾家。

  2. HTML铃彰,CSS,JavaScript:客戶端編程語(yǔ)言芯咧,決定了網(wǎng)站的外觀牙捉。其中 HTML 和 CSS 可以說是不可或缺的竹揍。

  3. JavaScript 與 Java 沒有任何關(guān)系,是為了給 HTML 網(wǎng)頁(yè)增加動(dòng)態(tài)功能鹃共。然而現(xiàn)在 JavaScript 也可被用于 Web 服務(wù)器端的開發(fā)鬼佣,如 Node.js(一個(gè) Javascript 運(yùn)行環(huán)境(runtime))。

4. 第二部分第二課預(yù)告


今天的課就到這里霜浴,一起加油吧晶衷!

下一課:Web探索之旅 | 第二部分第二課:服務(wù)器語(yǔ)言


我是 謝恩銘,終生學(xué)習(xí)者阴孟。
熱愛生活晌纫,喜歡游泳,略懂烹飪永丝。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锹漱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子慕嚷,更是在濱河造成了極大的恐慌哥牍,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喝检,死亡現(xiàn)場(chǎng)離奇詭異嗅辣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挠说,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門澡谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人损俭,你說我怎么就攤上這事蛙奖。” “怎么了杆兵?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵雁仲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我拧咳,道長(zhǎng)伯顶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任骆膝,我火速辦了婚禮,結(jié)果婚禮上灶体,老公的妹妹穿的比我還像新娘阅签。我一直安慰自己,他們只是感情好蝎抽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布政钟。 她就那樣靜靜地躺著路克,像睡著了一般。 火紅的嫁衣襯著肌膚如雪养交。 梳的紋絲不亂的頭發(fā)上精算,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音碎连,去河邊找鬼灰羽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鱼辙,可吹牛的內(nèi)容都是我干的廉嚼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼倒戏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼怠噪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杜跷,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤傍念,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后葛闷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憋槐,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年孵运,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秦陋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡治笨,死狀恐怖驳概,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旷赖,我是刑警寧澤顺又,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站等孵,受9級(jí)特大地震影響稚照,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俯萌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一果录、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咐熙,春花似錦弱恒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锈玉。三九已至,卻和暖如春义起,著一層夾襖步出監(jiān)牢的瞬間拉背,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工默终, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椅棺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓穷蛹,卻偏偏與公主長(zhǎng)得像土陪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肴熏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案鬼雀? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過程中,你是如何考慮他的UI蛙吏、安全性源哩、高性能、SEO鸦做、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,141評(píng)論 0 1
  • 作者 謝恩銘励烦,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。轉(zhuǎn)載請(qǐng)注明出處泼诱。原文:https://www.ji...
    程序員聯(lián)盟閱讀 2,702評(píng)論 6 18
  • 知: 自己科學(xué)地監(jiān)督自己讀書治筒。 舉例:列夫·托爾斯泰 行: 數(shù)量監(jiān)督:按計(jì)劃完成一定數(shù)量的閱讀屉栓。 質(zhì)量監(jiān)督:懂、通...
    sly61閱讀 911評(píng)論 0 3
  • 黑道風(fēng)云:杜月笙 2歲喪母耸袜,4歲喪父友多,7歲繼母又棄他而去,從小杜月笙就成了一個(gè)混混堤框,加上養(yǎng)成的不良習(xí)慣:好賭域滥!很快...
    dhjddjjn閱讀 999評(píng)論 0 1