为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第6天 项目实战:Vue.js仿京东到家电商全栈项目前端开发

课程名称:前端工程师
课程章节: 第三章 项目登录&注册页开发
主讲老师:Dell

课程内容: 第三章 登录&注册页开发

3.3注册页面开发及路由串联复习

1.登录注册逻辑:

  • 第一步: 默认先跳到登录页:
  • 第二步: 点击 “立即注册” 设置 localStorage.isLogin=true
  • 第三步: 点击登录 跳转到 “首页”
  • 第四步: 设置登录后的 “守护路由”, 即登录后就不能进入 “login”, ‘register’

其实注册页面与登陆页面很相似,但是从项目角度来看,还是分开来写比较好,方便后期拓展。

2. 当登陆页面,点击去注册页面 @handleRegisterClick :登陆页面点击“注册”按钮跳转到注册路由页面

3. 注册页面,点击后,跳转到登陆页面

3-4 使用axios 发送登陆 Mock 请求

只是模拟的功能,不是真实上线的功能。因为我们登陆和注册时,需要用到后端的接口和服务器,对数据进行交互。比如,用户输入的账号和密码和服务器的密码是否匹配,如果真的匹配,后端就告诉我们登陆成功才能跳转到首页。否则就登陆不成功,进不了页面。

1)axios的知识

axios.post(url[,data[,config]]). url不能省略
axios是一个基于Promise的第三方库,所以后面要用then\catch

2、POST和GET的区别:

get请求会缓存,post请求不会被缓存,原因如下:
HTTP缓存的目的就是使应用执行的更快,更易扩展,但HTTP缓存通常只适用于查询请求,也就是不更新服务端数据的请求,这也就导致了在HTTP的世界里,一般都是对GET请求做缓存,POST请求很少有缓存。
也就是像同学所说的get多用来查询数据,不会修改服务端数据,所以会被浏览器缓存。而post则是发送数据到服务器端去存储,数据必须放在数据库,所以一般都得去访问服务器端,而极少需要缓存。

而是说get请求的数据会被前端缓存,当浏览器发送了一条get请求,浏览器会把返回的数据记录下来,当再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取出来,这是浏览器自己的决策,后端并不知道也并没有收到任何请求。而post请求就不会缓存数据,每次请求都会重新去访问后台获取数据。

3、cookie、localStorage、sessionStorage的区别:

localStorage存储持久数据,浏览器关闭后数据不会丢失除非主动删除数据;

4、双向绑定:reactive、v-model都可以进行双向绑定,效果一样。

目的是将用户输入的用户名和密码存储起来
这里双向绑定是为了让输入的密码和传送到后端接口的密码一致
然后再将传送的密码和后台数据库中的进行匹配。
此处不涉及匹配,只是前端数据传输
reactive:composition API中的知识
使用reactive是为了让input输入的数据是响应式的
v-model :双向绑定input内容改变,显示的也改变;显示的数值改变,input中内容也改变

5、安装axios工具:npm install axios --save

6、引入工具: import axios from ‘axios’

原理1: 双向数据绑定,定义在data中
原理2:后端接口中,errno的值为0的时候,表示没有错误可以登陆

7. fastmock 虚拟后端接口

8、content-type请求要是json content-type默认的修改方法

使用axios封装后的get和post的代码:

import axios from 'axios'
const instance = axios.create({
    baseURL: 'https://www.fastmock.site/mock/ae8e9031947a302fed5f92425995aa19/jd',
    timeout: 10000
})
//get
// https://mobile-ms.uat.homecreditcfc.cn/mock/62aeca861dcd180027114309/jd
// https://www.fastmock.site/mock/ae8e9031947a302fed5f92425995aa19/jd
export const get = (url, params = {}) => {
    return new Promise((resolve, reject) => {
        instance.get(url, { params }).then((response) => {
            //  response是啥意思?处理返回的结果
            resolve(response.data)
        }, err => {
            // err是一个内置对象,表示捕获的错误
            reject(err)
        })
    })
}
// 封装Post
export const post = (url, data = {}) => {
    return new Promise((resolve, reject) => {
        instance.post(url, data, {
            // content-type请求要是json格式content-type默认的修改方法
            // axios.defaults.headers.post['Content-Type'] ='application/json'
            headers: {
                'Content-Type': 'application/json'
            }
        }).then((response) => {
            //  response是啥意思?处理返回的结果
            resolve(response.data)
        }, err => {
            reject(err)
        })
    })
}

处理注册流程代码:

//  (一)处理注册流程
const useRegisterEffcet = (showToast) => {
  const router = useRouter();
  const data = reactive({
    username: "",
    password: "",
    ensurement: "",
  });

  const handleRegister = async () => {
    //  发一个请求
    try {
      const result = await post("/api/user/register", {
        username: data.username,
        password: data.password,
      });
      if (result?.errno === 0) {

        router.push({ name: "Login" });
      } else {
        showToast("注册失败");
      }
    } catch (e) {
      showToast("请求失败");
    }
  };
  console.log(data,"data")
  const { username, password, ensurement } = toRefs(data);
  r

学习收获:

学会使用axios封装后的get和post的代码,加油!

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消