Vue学习笔记4.25

postman测试接口

axios的二次封装

XMLHttpRequest, fetch, JQ axios

为什么需要进行二次封装axios

请求拦截器,响应拦截器,
请求拦截器,可以在发请求之前处理一些业务;
响应拦截器,当服务器数据返回后,可以处理一些事情

在项目中,通常有一个api文件夹[axios]

接口当中:路径通常有/api
在封装axios的时候加baseURL配置项

// 对于axios进行二次封装
import axios from 'axios'

//1.利用axios对象的方法create, 去创建一个axios实例
//2.request就是axios, 只不过稍微配置一下
const requests = axios.create({
    //配置对象
    //基础路径,发请求的时候,路径当中会出现/api
    baseURL: '/api',
    //请求超时时间
    timeout:5000
})

//请求拦截器:在请求发出去之前做一些事情,
requests.interceptors.request.use((config)=>{
    //confug: 配置对象,对象里面有一个属性很重要,headers强求头
    return config
})

//响应拦截器
requests.interceptors.response.use((res)=>{
    //成功的回调函数
    return res.data
},(error)=>{
    //响应失败的回调函数
    return Promise.reject(new Error('fail'))
})

export default requests;

接口统一管理: 所有的接口在一个单独的文件里面管理,方便外面调用

//当前这个模块: API进行统一管理

import requests from "./request";

//三级联动接口
// 3.1请求地址
// /api/product/getBaseCategoryList
// 3.2请求方式
// GET
// 3.3请求参数
// 无

    //axios发请求的结果是promise
export const reqCategoryList = () => requests({
    url: '/product/getBaseCategoryList',
    method: 'get'
})

跨域问题

什么是跨域: 协议,域名,端口号不同的请求,称之为跨域

前台项目本地服务器:http://localhost:8080
后台服务器:http://gmall-h5-api.atguigu.cn

跨域解决方式:JSONP, CORS, 代理

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  //代理跨域
  devServer:{
    proxy:{ //当前台发请求的时候,发现url里面只要包含/api,就使用代理服务器向后台服务器发请求,代理服务器和后台服务器都属于服务器端,不存在跨域
      '/api': {
        target: 'http://gmall-h5-api.atguigu.cn'
      }
    }
  }
})

nprogress进度条的使用
//引入进度条
import nprogress from 'nprogress'
//start方法代表进度条开始
//done代表进度条结束
//引入进度条的样式
import 'nprogress/nprogress.css'

//请求拦截器:在请求发出去之前做一些事情,
requests.interceptors.request.use((config)=>{
    //confug: 配置对象,对象里面有一个属性很重要,headers强求头
    nprogress.start()
    return config
})

//响应拦截器
requests.interceptors.response.use((res)=>{
    //成功的回调函数
    nprogress.done()
    return res.data
},(error)=>{
    //响应失败的回调函数
    return Promise.reject(new Error('fail'))
})
vuex状态管理库

vuex是官方提供的插件,状态管理库,集中式管理组件中共用的数据
state,
mutataions,
actions,
getters,
modules

切记:并不是全部项目都需要vuex。如果项目很小,完全不需要vuex。
如果项目很大,组件很多,数据很多,项目维护很费劲,可以考虑使用vuex。

完成三级联动,展示数据

vuex三件套:dispatch, actions, mutations

完成一级分类动态添加背景颜色

第一种解决方案: 采用样式完成
&item:hover:{ background-color:green }
第二中解决方案: 使用js逻辑完成
2.通过JS控制2,3级列表的显示与隐藏
3.函数的防抖和截流:
防抖: 前面的所有的触发都被取消,最后一次触发,在规定的时间之后只触发一次
截流:在规定的时间间隔范围内不会重复触发回调,只有大于这个时间间隔才会触发,把频繁的触发变为少量的触发
4.三级联动组件的路由跳转和参数传递
三级联动用户可以点击的: 一级分类, 二级分类, 三节分类
home模块跳转到search模块的时候,会把产品名字和id那些在路由跳转的时候,进行传递。

声明式导航:会循环生成很多的router-link,影响性能,造成页面卡顿
编程式导航:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值