Python 入門指南 5.0

單元 38 - 網頁設計的基本概念

~~學習進度表~~

使用者 (user) 瀏覽網頁的基本流程如下

透過網址連結到網站

瀏覽器送出訊息給伺服器

伺服器送出結果給瀏覽器

使用者看到網頁內容

以上是說,使用者如果要瀏覽網站的網頁 (web page) 內容,需要先在瀏覽器 (browser) 輸入或點擊該網站的網址 (uniform resource locator) ,然後瀏覽器就會送出請求內容的訊息給該網站 (website) ,伺服器 (server) 就會回傳請求的結果給瀏覽器。

瀏覽器的請求不一定會成功,不過這是後端的問題,我們把討論集中在前端,也就是瀏覽器這一頭,並且假設向瀏覽器請求的結果是成功的,因此當伺服器送回請求結果回瀏覽器之後,使用者就可以在瀏覽器中看到網頁結果。

例如在我們的 Brython 範例中,就是先啟動 Python 內建的伺服器,然後透過預設的 localhost 網址來使用我們的 Brython 範例

如何啟動 Python 的內建伺服器會在單元 42 - 啟動伺服器與加入 encrypt.py 中介紹。

所以這裡我們要討論的是怎麼設計網頁,網頁設計包括 HTML + CSS ,以及 JavaScript ,其實跟 GUI 設定中的 MVC 模式很像, HTML + CSS 就是 MVC 中的 V ,而 JavaScript 就是 C 。

至於 Brython 的目的就是用 Python 取代 JavaScript ,因此如果 M 是用 Python 開發,例如我們在上一篇中完成的 Encrypt 類別 (class) ,這樣就可以直接在網頁中引入 encrypt.py ,就不用把要求傳送伺服器執行。

直接在瀏覽器中執行可以減少伺服器負擔,也可以減少網路傳送的時間,同時在瀏覽器中直接反應也對使用者比較友善,使用者可以直接看到結果不需要等待網路來往時間,因此就網路應用程式 (web application) 而言,這樣的優點顯而易見。

下面以簡單的 HTML 5 網頁檔案,示範 HTML 5 網頁的基本架構

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <!-- 設定網頁編碼 -->
    <meta charset="utf-8">
    <!-- 設定標題列文字 -->
    <title>HTML 5 範例</title>
</head>

<body>
    <!-- 設定網頁標題 -->
    <h1>HTML 5 範例標題</h1>
    <!-- 設定網頁段落文字 -->
    <p>HTML 5 範例內容</p>
</body>
</html>

<!-- 檔名: html5.html
     說明:《Python入門指南》的範例程式
     網站: http://kaiching.org
     作者: 張凱慶
     時間: 2023 年 7 月  -->

HTML 5 文件有兩大部分,分別是 <!DOCTYPE html><html> 成對標籤,然後 <html> 包含兩組成對標籤, <head><body> ,如下圖

<!DOCTYPE html> 放在檔案的開頭,宣告這是 HTML 文件,因此瀏覽器讀到這開頭的宣告,就會認定這是 HTML 5 文件

 1
<!DOCTYPE html>

由於 HTML 版本會有差異,相同語法可能會有不同的作用,因此 HTML 文件開頭都會宣告版本, HTML 5 簡化版本宣告,只要寫 HTML 就表示套用的是 HTML 5 。

下面第 2 行到第 16 行是 <html> 成對標籤的範圍,從第 2 行 <html> 開始,到第 16 行 </html> 結束

 2
16
<html>
</html>

成對標籤的目的是圍住網頁內容,由於網頁內容不外是文字、聲音、圖片或影片,其中大多數是文字,因此預設是把文字直接放到成對標籤裡,像是這個例子中 <title><h1><p> 都是如此,此外,成對標籤中可以有其他的標籤,像是 <html><head><body> 之內都是可以再有其他標籤,至於非成對標籤是由標籤中的屬性做相關設定。

<html> 中至少會有另外兩組成對標籤,其中 <head> 裡面的是網頁資訊的標籤

 3
 5
 7
 8
<head>
    <meta charset="utf-8">
    <title>HTML 5 範例</title>
</head>

<meta> 是中繼資料的標籤,這裡是把網頁編碼設定成 "utf-8" ,所以瀏覽器會以 "utf-8" 來顯示這份 HTML 文件,至於 <title> 是瀏覽器視窗標題列顯示的文字。

<body> 裡面是網頁內容,這是說 <body> 中的所有標籤及其內的內容都會顯示在瀏覽器中

10
12
14
15
<body>
    <h1>HTML 5 範例標題</h1>
    <p>HTML 5 範例內容</p>
</body>

<h1> 是字形尺寸最大的網頁標題,這裡網頁標題顯示的是「HTML 5 範例標題」,<p> 則是段落文字。

另外標記成綠色的是 HTML 文件的註解

 4
 6
11
13
    <!-- 設定網頁編碼 -->
    <!-- 設定標題列文字 -->
    <!-- 設定網頁標題 -->
    <!-- 設定網頁段落文字 -->

HTML 文件的註解從 <!-- 開始,然後到 --> 結束,可以跨多行。

此例用 Google Chrome 開啟如下

以上的 HTML 5 例子很簡單,採用預設樣式,沒有用到其他的 HTML 元素,下一個單元我們會先介紹 HTML 5 的各種元素,之後再介紹設定樣式。

中英文術語對照
瀏覽器browser
類別class
伺服器server
網路應用程式web application
網頁web page
網站website
網址uniform resource locator
使用者user
重點整理
1. 使用者瀏覽網頁的基本流程為透過網址連結到網站、瀏覽器送出訊息給伺服器、伺服器送出結果給瀏覽器、使用者看到網頁內容。
2. 網頁設計包括 HTML + CSS + JavaScript , Brython 的目的就是用 Python 取代 JavaScript 。
3. 網路應用程式應該要把跟使用者互動的程式寫在網頁中,減少網路傳輸的時間,以及伺服器的負擔。
4. HTML 5 文件的開頭用 <!DOCTYPE html> 宣告, 然後網頁部分放在 <html> 中,其中 <head> 是網頁資訊, <body> 是網頁內容。
問題與討論
1. 把網頁跟使用者互動的程式寫在網頁中有什麼好處?
2. HTML 5 文件跟之前的 HTML 版本有何不同?
練習
1. 寫一個 HTML 檔案 exercise3801.html ,分別設定 <h1><h6> 的標題,比較他們的預設字型尺寸。 參考標記碼
2. 寫一個 HTML 檔案 exercise3802.html ,設定 <h1><h2> 的標題,另外設定 <p> ,裡頭放入重複的「段落文字」,比較他們的預設字型尺寸。 參考標記碼
3. 寫一個 HTML 檔案 exercise3803.html ,設定 <h1><h3> 的標題,另外設定 <p> ,裡頭放入重複的「段落文字」,比較他們的預設字型尺寸。 參考標記碼
4. 寫一個 HTML 檔案 exercise3804.html ,設定 <h1><h4> 的標題,另外設定 <p> ,裡頭放入重複的「段落文字」,比較他們的預設字型尺寸。 參考標記碼
5. 寫一個 HTML 檔案 exercise3805.html ,設定 <h1> ,然後再設定 <p> 用做替代標題,比較他們的預設字型尺寸。 參考標記碼
6. 寫一個 HTML 檔案 exercise3806.html ,設定 <p><div> ,裡頭各自放入重複的「段落文字」,比較他們的預設字型尺寸。 參考標記碼
7. 寫一個 HTML 檔案 exercise3807.html ,設定兩個 <p> ,分別將 dir 屬性設定為 "ltr""rtl" ,比較他們實際的呈現效果。 參考標記碼
8. 寫一個 HTML 檔案 exercise3808.html ,設定兩個 <p> ,分別設定 id 屬性。 參考標記碼
9. 寫一個 HTML 檔案 exercise3809.html ,設定兩個 <p> ,分別設定 class 屬性。 參考標記碼
10. 寫一個 HTML 檔案 exercise3810.html ,設定兩個 <p> ,分別設定 lang 屬性。 參考標記碼

上一頁 Brython 篇
回 Python 入門指南 5.0 首頁
下一頁 單元 39 - HTML 5 元素導覽
回 Python 教材首頁
回程式語言教材首頁