概要
本文以一个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框架