前端
与用户直接打交道的操作界面都可以称之为前端
不直接与用户打交道的内部真正执行核心业务逻辑的代码程序(幕后工作者)
真正的前端工程师也需要学习很长时间,我们作为后端工程师,对前端目前也只做最核心的了解
HTML:网页的骨架
CSS:网页的样式
JS:网页的动态
1.手写一个服务端程序
2.使用浏览器充当客户端
3.浏览器端无法直接展示服务端的响应数据
4.由于浏览器需要兼容很多服务端软件,为了实现无障碍沟通交流,有了一些协议
HTTP协议,FTP协议,HTTPS协议
5.浏览器发送的请求数据格式肯定没问题,因为别人早就封装好了,问题出在我们自己写的服务端响应数据格式
import socket server = socket.socket() server.bind(('127.0.0.1', 8080)) server.listen(5) while True: sock,addr = server.accept() while True: sock.send(b'hello') date = server.recv(1024) print(date)
1.基于请求响应 2.基于TCP/IP之上作用于应用层的协议 3.无状态 4.无/短连接
请求数据格式 1.请求首行(请求方式:有很多 协议名称及版本) 2.请求头(一大堆K:V键值对) 3.换行 4.请求体(携带一些敏感的数据,不是所有请求都有请求体) 响应数据格式 1.响应首行(响应状态码) 2.响应头(一大堆K:V键值对) 3.换行 4.响应体(一般情况下就是浏览器要展示给用户看的数据)
利用数字来表示一些复杂的情况说明(类似于暗号)
1XX:服务端已经收到你的请求正在处理,你可以继续提交或者等待 2XX:200 OK服务器给出了响应 3XX:重定向 4XX: 403请求不符合条件 404请求资源不存在 5XX:服务端内部错误 在公司里还会自己定义更多的状态码 一般情况下从10000开始
超文本标记语言是所有浏览器展示的页面必备的
浏览器展示的页面我们也称之为HTML页面,存储HTML语音的文件后缀名一般是 .html
HTML没有任何逻辑,所见即所得
HTML代码不讲究缩进
1.html注释语法 <!--注释内容--> 2.HTML文件格式 <html> 所有的代码都必须写在html标签内部 <head> 一般不是给用户看的 </head> <body> 浏览器展示给用户看的内容 </body> </html> 3.HTML标签分类 单标签(自闭合标签) <img/> 双标签 <a></a> <p></p> <li></li>
title 控制标签页小标题 style 内部支持编写css link 引入外部css文件 script 内部支持编写JS代码,还可以通过src属性引入外部JS文件 meta 通过内部属性的不同可以有很多功能 <meta name="keywords" content="填写一些关键字提升网页被搜索的概率"> <meta name="description" content="填写一些网页的简介">
注意:有很多样式,可能存在多种标签可以实现
标签 | 作用 |
---|---|
h1~h6 | 一到六级标题标签 |
p | 段落标签 |
hr | 水平分割线 |
br | 换行符 |
u | 下划线 |
i | 斜体 |
s | 删除线 |
b | 加粗 |
一个标签独占一行
内部文件多大自身就占多大
空格 > 大于号 < 小于号 & & ¥ ¥ ® 注册 © 版权
a标签 链接标签:href 可以填网址,点击自动跳转 href还可以填写其他标签的id值 实现锚点功能:target 可以控制是否新建页面跳转 _self _blank img标签 图片标签 src 填写图片地址(网络地址、本地地址) title 鼠标悬浮在图片上会有提示信息 alt 图片加载失败提示的信息 height 调整图片高度 weight 调整图片宽度 高度和宽度,只调整一个是等比例缩放
用来快速定位需要操作的标签
id 属性(一对一管理) 类似于身份证号码,在同一个HTML页面上,id值不能重复 class 属性(批量管理) 类似于分组,多个标签可以拥有相同的class值
1.无序列表 <u1> <li>pyhton</li> <li>golang</li> <li>linux</li> </u1> 页面上有规则的排列的横向或竖向的多个元素几乎使用的都是无序列表 2.有序列表 <ol type="I" start="10"> <li>第一项</li> <li>第二项</li> <li>第三项</li> </ol> 3.标题列表 <d1> <dt>标题一</dt> <dd>内容1</dd> <dt>标题一</dt> <dd>内容1</dd> <dd>内容2</dd> </d1>
<table> <thead> <tr> <th>序号</th> <th>用户名</th> <th>密码</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>jason</td> <td>123</td> </tr> </tbody> </table>
能够获取用户输入(输入、选择、上传)的数据并发送给后端服务器
<form action="" method="post"></form> action属性:用于控制数据的提交地址,不写的话就是朝当前页面所在的地址提交 method属性:用于控制请求的方式(get/post) <form action="" method="post"> <!--action属性:用于控制数据的提交地址,不写的话就是朝当前页面所在的地址提交--> <!--method属性:用于控制请求的方式(get/post)--> <p>username:<input type="text"></p> <p>password:<input type="password"></p> <p>birthday:<input type="date"></p> <p>email:<input type="email"></p> <p>gender: <input type="radio" name="gender">male <input type="radio" name="gender">female <input type="radio" name="gender">other </p> <p>hobby: <input type="checkbox" name="hobby">basketball <input type="checkbox" name="hobby">football <input type="checkbox" name="hobby">dance </p> <p>file: <input type="file"> </p> <p>files: <input type="file" multiple> </p> <p>province: <select name="" id=""> <option value="">上海</option> <option value="">北京</option> <option value="">深圳</option> </select> </p> <p>GF: <select name="" id="" multiple> <option value="">小敏</option> <option value="">小蓝</option> <option value="">小红</option> <option value="">小黄</option> </select> </p> <p> <input type="submit" value="用户注册"> <input type="reset" value="重置按钮"> <input type="botton" value="普通按钮"> </p> </form>