Python基础day46
什么是前端
所有与用户直接打交道的都可以称之为前端。--------->能够直接使用肉眼之间看到的都是前端
eg:PC端页面、手机端页面、平板页面、车载显示器等
什么是后端用户打交道的都可以称之为是后端,后端其实就是幕后操作者
eg:Python语言、Java、Go、C、C++、PHP等都是常见的后端语言
在招聘网站上常见的岗位描述:Python后端工程师、Java后端工程师、Go工程师、前端工程师等
Python全栈工程师、Java全栈工程师等
常见的招聘网站: Boss直聘、智联、拉钩、51等,互联网人一般都使用Boss直聘
为什么要学前端?
我们只学习Python远远不够,甚至于只能找Python后端的工作
我们学完前端之后,就可以找到Python全栈工程师、学了前端我们可以独立的搭建一个完整的项目出来
前端对于我们做后端的来说要求并不高,只要求能够写一些简单的页面和看得懂别人的写简单的前端代码,在能够调试一些基础的页面即可
前端需要学习的内容
前端三剑客
HTML:一个网站的骨架,没有任何的样式
CSS:就是给网页添加样式的,目的是让其更加的美观、好看、漂亮而已
JavaScript:它主要用来让网页动起来,简称 js
还要学一些简单的前端框架
jQuery、bootstrap、Vue(中国人尤雨溪开发的)、react、angluar等
软件开发架构
前端的学习只需要一个浏览器即可、前端的代码是由浏览器来解释的
1. C/S架构
2. B/S架构
前端的代码在哪里写呢?
在浏览器中写的前端代码不能够永久生效,只能临时看到效果,刷新页面就消失。
因此,我们写前端代码依然需要写在文件里
前端代码写作辅助工具
1. 都可以直接写在文本中(.txt)
2. vscode、pycharm、notepad++、sublime等
在浏览器中输入网站,按下回车键,到页面渲染成功,中间发生什么事情
1. 客户端(浏览器)向服务端发起请求
2. 服务端接收浏览器的请求
3. 服务端要处理好前端要的数据返回
4. 把数据返回给前端------>浏览器中,按照一定的规则把后端返回的数据展示给用户
如果我们写一个服务端,让浏览器充当我的客户端,我也可以写出一个基于浏览器的项目
目前我们缺的就是服务器,很显然我们可以通过socket写出来一个服务端
言外之意:浏览器是可以充当很多服务端的客户端的
1. 可以充当百度的客户端
2.京东的
3. 腾讯视频的
...
那么浏览器是如何识别是那个服务端的呢?
所有的服务端必须遵循一个原则,这个原则就是浏览器来规定的,如果不遵循这个规则,那么你的数据就没办法识别,这个规则就是HTTP协议
如果你的服务端返回的数据想被浏览器识别,你就必须遵循HTTP协议
HTTP协议
超文本传输协议,作用:就是规定了服务端和客户端之间的数据传输格式
HTTP协议的四大特性
1. 是基于请求和响应的
请求:客户端主动向服务端发起请求
响应:服务端向客户端返回
2. 它是基于TCP/IP协议之上的应用层协议
HTTP协议它是基于TCP写一些出来的
3. 无状态
就是他不能够保存用户的信息
背景:早期的网站用户是不需要登录的,比如新闻类的、博客类的网站是不需要登录的,也就不需要保存用户的消息。随着技术的发展,诞生了像支付宝、京东网站等网站, 就需要用户登录了,由于HTTP协议压根就不能保存用户信息,所以就诞生了一些保存用户信息的技术:cookie、session、token
4. 短连接/无连接
当服务端和客户端想要传输数据就必须建立连接,正常情况,二次成功发送一次消息就断开连接,称之为是短连接
长连接:而这成功发送一次消息之后,不会立马断开连接,而是中间会隔一段时间,如果双方都没有再次发送消息,就断开
场景:客服系统(逻辑很复杂)
客户端向服务端发起请求会携带一些数据,就称之为是请求数据
HTTP的请求数据格式
常用的版本号就是 http1.x 版本,新版本应该是 http2.x
请求首行(请求方式、协议/版本号)
请求头
\r\n
请求体(不是什么请求方式都有的,GET请求方式没有)
HTTP协议的响应数据格式
响应首行(响应状态码)
响应头
\r\n
响应体
响应状态码
简单描述就是使用一个简单的数字代表一段复杂的描述性信息
1xx: 了解,服务端接收数据成功,客户端还可以继续提交
2xx:掌握,200,代表的是响应成功
3xx: 301, 302,代表的是重定向,代码内部帮助我们跳转到了指定页面
4xx:404,资源不存在,找不到,not found,制作404定制页面
5xx:500,服务器内部错误
如果你想深入了解HTTP协议,推荐看图解HTTP,图解TCP
请求方式
GET
朝服务端要数据的时候,一般都是使用GET请求方式
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=49055317_42_hao_pg&wd=%E7%BE%8E%E5%A5%B3
协议:// 域名/后缀/?参数
协议:// 域名/后缀/?k=v&k1=v1&k2=v2...
URL: 统一资源定位符(网址)
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=49055317_42_hao_pg&wd=%E7%BE%8E%E5%A5%B3
POST:
朝服务端提交数据的时候,一般使用POST请求方式
例子:百度的登录功能,把用户名和密码提交到百度的后端做验证.用的就是POST请求
面试题:聊聊GET请求和POST请求的区别
1. get请求方式数据不够安全,POST请求数据更加安全
2. GET请求方式没有请求体,而POST请求有请求体
3. GET请求能够携带的数据量没有POST请求携带的多
GET请求一般携带4KB的大小
POST请求基本上没有限制
ps:记住:学前端,以后就是有谷歌浏览器,默认浏览器:360,qq,ie(必须不能用)。在前
端中,最难的就是浏览器兼容性问题:同样的代码在不同的浏览器中展示的效果不一样
谷歌浏览器的兼容性是最强的,另外一点就是它非常好用的,调试代码方便等
<h1>helloworldaaa</h1> <a href='http://www.baidu.com'>click me</a> <img src='https://img2.baidu.com/it/u=2942449272,1418584815&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1689699600&t=6840fd4bcbd7f1c87dd657700e7010db'> # 以上这些标签就是HTML标签 h1 a img # HTML中标签的名字不能改只能这样写
HTML如何书写
HTML文件的后缀名是.html
1. 书写位置
文件中
浏览器中
各种工具中
2. 如何打开一个html文件
只需要使用浏览器打开文件即可,前端的代码就是浏览器来识别的
HTML文档介绍
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> </html> # head标签一般写的不是让用户看的 # body标签一般写什么内容,浏览器中就能够看到什么内容,给用户看的 # 主要就是学这两个标签的
head标签的使用
常用标签 <title>你看我在哪里显示</title> # 标签顶部显示的内容 <link rel="stylesheet" href="css/my.css"> # 引入外部CSS 在pycharm中注释符号的快捷键是:ctrl + ?
body中常用的标签
基本标签 <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除</s> <p>段落标签</p> <h1>标题1</h1> <h2>标题2</h2> <h3>标题3</h3> <h4>标题4</h4> <h5>标题5</h5> <h6>标题6</h6> <!--换行--> <br> <!--水平线--><hr>
标签的分类1
块儿级元素 # 独占一行,不管自身有多大,他自己就占一行 h1标题标签都是 p标签 hr标签 行内元素(内联元素) # 自身文本有多大就占多大,不会独占一行 <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除</s>
标签的分类2
双标签 <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除</s> h1标题标签都是 p标签 <a> </a> 单标签 hr标签 br img
内容 对应代码 空格 > > < < & & ¥ ¥ 版权 © 注册 ®
div
span
这两个标签没有实际的意义,一般用来'布局'使用
div它是块儿级元素,给页面占布局
span标签是行内元素,用来给文本内容占布局
标签的嵌套
# 我们使用亲戚关系来表示标签之间的关系 <div> div标签是p标签的父标签 <p> p标签是div标签的儿子,是span标签的父标签 <span></span> span标签是p的儿子,是div的孙子 </p> <p></p> # p标签是div标签的儿子,是p标签的兄弟,也是span的兄弟标签 <span></span> </div> """ 注释事项: 块级儿级元素能够嵌套所有的行内元素,块儿级元素也能够嵌套所有的块儿级元素,但是出了p标签之外 行内元素不能够嵌套块儿级元素,但是可以嵌套所有的行内元素 """ # 前端里面一般不会轻易的报错!!!!!!!!,你写的代码不正确不规范,没有效果而已,但是不会报错. # 前端是跟用户打交道的,不能随随便便的报错,要不然体验很差