什么是前端

# 只要是跟用户打交道的界面都可以称之为前端
eg:PC,手机端,平板

什么是后端?
# 不直接与用户界面打交道的

eg:
    python, java, go, node.js, php...
    
前端工程师,后端工程师,python工程师,java工程师

前端学习的内容

1. HTML:网页的骨架
2. css:是美化网页的
3. javascript:使网页动起来,有动态的效果
# 前端三剑客

前端框架:
    bootstrap, jQuery,vue, react, angular

软件开发架构

1. c/s: 客户端/服务端
2. b/s: 浏览器/服务端
    
'''学习前端的环境:只需要一个浏览器即可,前端的代码浏览器执行'''

学习前端代码的书写环境:
    1. 文本
    2. pycharm
    3. vscode

在浏览器网址栏中输入网址,发生了什么事?

'''
    1. 浏览器发起请求
    2. 服务端接收请求
    3. 服务端处理请求
    4. 服务端返回结果给浏览器
'''

# 浏览器也可以作为服务端的客户端
# 我们写一个浏览器/服务端程序,让浏览器作为我们的客户端

浏览器是可以充当很多服务端的客户端,
    1. 腾讯视频
    2. 百度的
    3. 淘宝的
    4. 京东的
    
问题:
    浏览器如何识别是哪个服务端?
    
# 所有的服务端都必须遵守一个规则
这个规则是什么呢?

HTTP协议

1. tcp/udp协议  => 传输层
2. IP协议       => 网络层
3. HTTP协议      => 应用层

# 1. HTTP协议的四大特性:
    '''
        1. 基于请求响应
        2. 在tcp/udp协议之上的应用层协议
        3. 无状态
            不能保存数据(不能保存用户信息)
            怎么解决不能保存用户信息呢?
                cookie, session, token...
        4. 短链接/无连接
    '''
 
# 2. 请求数据
    1. 请求首行(请求方式)
    2. 请求头
    3. \r\n
    4. 请求体
# 3. 响应数据
    1. 响应首行
    2. 响应头
    3. \r\n
    4. 响应体
    
    
# 4. 请求方式
    1. get
        当客户端向服务端索要数据的时候,就使用get请求
        参数
         # https://www.baidu.com/s?wd=%E5%9B%BE%E8%A7%A3HTTP&rsv_spt=1
         ?k=v&k1=v1&k2=v2
         '''get请求是没有请求体的'''
         '''get请求不安全'''
        '''get请求携带的参数大小有限制:4KB'''
    2. post
        当客户端向服务端提交数据的时候使用post
        参数
        '''post是有请求体的'''
        '''post请求安全'''
        '''post请求携带的参数大小没有限制'''
        
 # 面试题:get和post区别?

响应状态码:
    1xx: 请求提交成功,你还可以继续提交
    2xx:  200, 请求成功
    3xx:   301, 302都是重定向
    4xx: 404:资源不存在, 403:没有权限
    5xx: 500:服务器内部错误

HTML简介:只要你想在网页中显示一些内容,就必须使用html标签

<h1>hello baby!</h1>
<img src='https://img0.baidu.com/it/u=2797085065,1109102906&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500'>
<a href='http://www.baidu.com'>点我啊</a>

html代码的书写位置

# 我们现在学习前端,只需要一个浏览器,推荐使用Chrome浏览器

'''在前端中,最大的问题就是浏览器兼容性问题,同样的代码在不同的浏览器执行的结果是不一样的'''

1. 直接新建一个txt文件,只需要把后缀名改为.html即可
2. 我们可以在pycharm中新建html文件

如何打开html文件

1. 直接双击文件名
2. 在pycharm中打开,右键运行,在右上角点击浏览器图标

html的文档结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>哈哈哈哈</h1>
</body>
</html>

# head标签一般写的不是让用户看的
# body标签一般写想让用户看的到的东西

head中常用的标签

<head>
    <meta charset="UTF-8">
    <title>百度一下,你就知道</title>
    <style>
/*<!--        写的是css代码-->*/
        h1 {
            color: red;
        }
    </style>
    <link rel="stylesheet" href="mycss.css">
    <script>
        
    </script>

    <script src="myjs.js"></script>
</head>

body内常用标签

<b>加粗</b>
<i>斜体</i>
<u>下划线</u>
<s>删除线</s>
<p>
    采菊东篱下,悠然见
</p>
<p>
    采菊东篱下,悠然见南山
</p>
<br>
<hr>

'''
    div span
    
    div就是用来占布局的
    span:占文本布局的
'''

标签的分类

1. 单双标签
    '''
        单标签
        双标签
    '''
2. 按照性质分类
    '''
        块儿级标签:
            内容独自占一行
            div, p, h1~h6都是
        行内标签:
            内容不是独自占一行,自身文本有多大就站多大
            i, u, s, b, span
    '''

标签的嵌套

我们在前端中使用亲戚关系表示嵌套关系
  '''
      <div> div是p和span的父亲
        <p> p是span的父亲
            <span>span是p的儿子,是div 的孙子,后代</span>
        <p>
        <span></span>
    </div>
    <span>是div的弟弟</span>
    <div></div>
  '''
    
 # 标签的嵌套:
    块儿级元素可以嵌套所有的行内元素,行内元素不可以嵌套块儿元素
    p标签不能嵌套块儿级元素

    '''前端不会轻易报错'''

img标签

<img src="../../img/aaa/123.png" title="好美哦" width="200px"  alt="">

src:
    1. 外链地址
    2. 本地地址
title:
    当鼠标悬浮时候显示的文字信息, title属性是所有标签都有的属性
width:
    设置图片的大小,一般只设置一个款或者一个高,默认是等比例缩放
    
alt:
    当图片加载失败的时候,显示的提示信息

a标签

# 超链接
<a href="http://www.baidu.com" title="这是标题" target="_blank">点我</a>

href:
    跳转的地址
 target:
    _self 默认,从当前标签跳转
    _blank
    新开一个标签跳转