1. 程式人生 > >Html的本質及在web中的作用

Html的本質及在web中的作用

介紹 conn src str local bin utf 字符串 網站

概要

本文以一個Socket程序為例由淺及深地揭示了Html的本質問題,同時介紹了作為web開發者我們在開發網站時需要做的事情

Html的本質以及開發需要的工作

1.服務器-客戶端模型
其實,對於所有的Web應用來說,從本質上講我們運行web應用程序的地方就是一個socket服務端,而用戶的瀏覽器就是一個socket客戶端。
而這個“服務器端”的代碼可以簡寫成如下形式:

import socket

def handle_request(conn):
buf = conn.recv(1024)
conn.send(bytes(‘HTTP/1.1 200 OK\r\n\r\n‘,encoding=‘utf-8‘))
conn.send(bytes(‘Hello WHW!‘,encoding=‘utf-8‘))

def main():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((‘localhost‘,8001))
sock.listen(5)
while 1:
    conn,addr = sock.accept()
    handle_request(conn)
    conn.close()

if __name__ == ‘__main__‘:
    main()

這裏,我們可以看到,這個服務器端首先給瀏覽器(客戶端)發送了一個HTTP響應信息,然後發送了字符串“Hello WHW!”。
我們先運行這個程序然後在瀏覽器輸入:localhost:8001,就可以看到服務器send出的這個“Hello WHW!”字符串:
技術分享圖片
接著,我們在函數handle_request的第二個conn中加上一個這樣的字符串:
conn.send(bytes(‘< h1 style="background-color:red;">Hello WHW!‘,encoding=‘utf-8‘))
再看看效果:
技術分享圖片
也就是說,瀏覽器自動將服務器發送給它的字符串按照一定的規則呈現出一定的效果!
2.Html本質揭示


2.1 由1中的例子我們可以得到如下的結論:
(1)當瀏覽器作為客戶端與運行web程序的服務器端進行交互的時候,服務器給瀏覽器返回的是“字符串”;
(2)如果這些“字符串”中有瀏覽器能夠識別的格式,那麽瀏覽器會自動的將這些包含在字符串中的格式解析成用戶看著舒服的“效果”;
(3)而要想在瀏覽器實現我們想要的效果,我們就必須去學習瀏覽器都有哪些規則;
(4)我們可以將服務器端send的內容先寫進一個文件裏,然後將這個文件的內容讀出來再發給瀏覽器,而這個文件,大家“約定俗成”的將其命名成後綴為.html的文件,也就是大家熟悉的html文件。
2.2 所以從web開發者的角度講,我們需要做的事情有:

(1)按照Html的規則編寫Html文件——充當模板
(2)從數據庫中獲取數據,然後替換到Html文件的數據位置——需要學習web框架

Html的本質及在web中的作用