九層之台 Web開發教程 7 網路

2021-10-23 04:30:57 字數 2387 閱讀 9023

axios

在之前的章節裡面,我們已經介紹完畢了所有web應用開發所需要的技術和框架,有了這些技能,你已經可以輕鬆完成乙個很不錯的互動式網頁應用,把精彩紛呈的內容呈現給使用者了。

從本章開始,我將補充介紹一些細節技術(和原理),它們經常在網頁應用中有重要的作用。例如本章所講的網路,就是是網頁應用無法避免的問題:如何獲取資料?

本章很多內容可能都是後端的內容,我在這裡稍稍拓展。那為啥要講呢?「這就是我們想要的!」

網頁應用也不能逃離所有應用的限制,縱使你的ui有千般變化,也無法脫離核心資料而存在。如果沒有商品資料,怎麼顯示購買介面?如果沒有天氣資料,怎麼顯示天氣預報?如果沒有使用者資料,怎麼顯示使用者中心?此乃巧婦難為無公尺之炊也。

也許有的人一定要較真:「單機應用不也玩的挺好!」,那我就要回一句:「那你何必用網頁應用?」

網頁應用本身就是依託網路而存在的,網路也是網頁應用的靈活性所在。

因此,我們必然需要通過一定的方法來獲得這些資料。在邏輯上,我們把這種資料寫入、儲存、調取、顯示的過程稱為應用架構。在架構中,一類資料(例如:每天的天氣預報資料)被稱為模型。這其實本來是後端(伺服器端)需要關心的問題,但是隨著前端網頁的日益複雜,也漸漸出現在前端。可還記得我們說過,vuejs的架構是mvvm,即model-view-viewmodel?

無論採取什麼架構,我們無法避免的矛盾在於:資料放在天南海北的某個伺服器上,但卻需要在你的手機(客戶端)上顯示出來。在web發展的這麼多年當中,解決方法也在不斷地更新。讓我們來了解一下!

之前說過,檢視就是使用者看到的使用者介面。如何把伺服器上的資料放進客戶端的檢視?

舉個例子說明:如果使用者a訪問了自己的個人資訊頁面,使用者b也訪問了自己的個人資訊頁面,怎麼把資料庫中的a和b的資訊分別顯示在兩個頁面上呢?

已淘汰,可考古

web最早最古老的方法。簡單想想,我對每個不同的使用者都生成乙個網頁檔案,包含了不同的資訊,不就好了嗎?使用者a訪問到的是a.html,b使用者訪問到的是b.html,搞定!

網頁是從網頁檔案中載入的,網頁檔案的內容是固定的,因此這是靜態頁面。

問題也是顯著的:大量的**被重複書寫,即使使用程式去生成不同的網頁檔案,在使用者數量變多以後也是一種極大的浪費。

數十年中的主流做法

隨著web的發展,人們發現乙個驚喜的事實:只要我用乙個程式去接收、處理、響應http請求,並且動態生成需要返回的網頁**,就可以實現對不同的使用者顯示不同的網頁!

例如,使用者a向伺服器發起了http請求,伺服器通過檢查http請求中包含的資訊,驗證資料庫中的使用者資料發現這是使用者a的請求。這時候服務端程式通過查詢資料庫獲得使用者a的個人資料,將這些個人資料拼接成乙個html**並響應http請求。這樣,使用者a看到的頁面就成功地顯示了他的個人資料。同理,使用者b也可以通過在http請求中包含他的資訊(例如使用者名稱和密碼)來獲取屬於他的頁面。

在這種方案中,網頁**都是服務端動態生成的。在伺服器上,服務端程式把資料塞進固定的網頁樣式當中,並把整個網頁的**作為http請求的響應。因此,我們把這一類方法叫做服務端渲染。

最著名的服務端渲染語言可能是php(世界最美語言)。php的**作為html的乙個元素被插入到html**當中。當http請求到來的時候,php直譯器(執行在伺服器上的程式)將html**中的php**解釋執行,並用**執行的結果替換掉php**元素,形成乙個沒有php**的純html**。

這時html**中的一部分內容是php**執行的結果,通過這種方式可以實現動態網頁內容。

如果有興趣可以去學習一下哦!這是後端的內容啦!

「藕斷絲連」

新一代的網路資料獲取方式,被稱為ajax。簡單來說,在網頁檔案載入完畢以後,通過網頁的js**發起http請求獲取核心資料,並通過js**把獲取到的資料顯示在頁面上。

這種方式的網頁**依然是固定的,動態內容只是根據js**中獲取到的資料變數顯示的網頁內容而已。因此,這樣的網頁是靜態頁面,卻實現了動態頁面的效果,甚至更好。在頁面資料發生變化的時候,只需要js**重新發起請求更新資料,然後顯示在頁面上即可。

此外,從整個網路應用的訪問情況上來看,這種方式可以允許前端頁面的cdn快取(因為前端頁面**不會變),大大降低了伺服器的計算壓力和流量壓力。

cdn是content delivery network的縮寫,即內容分發網路,這個我們下次再說。

如何才能在js**中發起請求呢?js自帶了一種方式是fetch,但是我認為axios這個js庫更好用。

你可以通過cdn的方式直接引入axios(使用了jsdelivr):

Centos7網路配置教程

etc sysconfig network 包括主機基本網路資訊,用於系統啟動 etc sysconfig network script 此目錄下是系統啟動最初始化網路的資訊 etc sysconfig network script ifcfg em1 網路配置資訊,每個人的配置名字不一樣通過命令檢...

網路學習筆記一 網路7層模型

1 物理層 主要定義物理裝置標準,如網線的介面型別 光纖的介面型別 各種傳輸介質的傳輸速率等。它的主要作用是傳輸位元流 就是由 1 0 轉化為電流強弱來進行傳輸,到達目的地後在轉化為1 0,也就是我們常說的模數轉換與數模轉換 這一層的資料叫做位元。2 資料鏈路層 主要將從物理層接收的資料進行 mac...

計算機網路7 三 網路層 IP

為主機提供資料傳輸服務。在傳送資料時,網路層把傳輸層產生的報文段或使用者資料報封裝成ip資料報進行傳送。網路層的另乙個任務是選擇合適的路由,使ip資料報可以通過網路中的路由器找到目的主機。使用的協議有ip協議,還有與ip協議配套使用的arp icmp igmp協議。位址解析協議arp 網際控制報文協...