美文网首页
vue常见问题(2)

vue常见问题(2)

作者: jasmine_6aa1 | 来源:发表于2020-11-19 20:19 被阅读0次
  • axios封装和api接口的统一管理
  • 定时器问题
  • rem文件的导入问题
  • 组件中写选项的顺序
  • 开启gzip压缩代码
  • 详情页返回列表页缓存数据和浏览位置、其他页面进入列表页刷新数据的实践
  • css的scoped私有作用域和深度选择器
  • hiper打开速度测试
  • 可选链操作符
  • 利用闭包构造map缓存数据

1,axios封装和api接口的统一管理

network
    api.js
    http.js
    request.js

http.js 文件配置

import axios from 'axios'; // 1,引入axios

// 2,环境的切换
if (process.env.NODE_ENV == 'development') { // 开发环境
    axios.defaults.baseURL = 'https://www.development.com';
} else if (process.env.NODE_ENV == 'testing') { // 测试环境
    axios.defaults.baseURL = 'https://www.testing.com';
} else if (process.env.NODE_ENV == 'production') { // 生产环境
    axios.defaults.baseURL = 'https://www.production.com';
}

// 3, 设置请求超时  通过axios.defaults.timeout设置默认的请求超时时间。
axios.defaults.timeout = 10000;

// 4, post请求头的设置  post请求的时候,需要加上一个请求头,在这里设置一个默认的值
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

// 5 请求拦截要执行判断token值,在发送请求前,进行请求的拦截,需要用户登录校验

// 请求拦截器  每次响应请求时,拦截器中要执行的操作,判断是否有 token 并且token是否过期了
axios.interceptors.request.use(
    config => {
        // 每次发送请求之前判断本地存储是否存在token        
        // 如果存在,则统一在http请求的header都加上token
        // 即使本地存在token也有过期情况,所以在响应拦截器中要对返回状态进行判断 
        const token = window.localStorage.getItem('token');
        token && (config.headers.Authorization = token);
        return config;
    },
    error => {
        return Promise.error(error);
    })

// 6 请求响应要执行判断返回值
axios.interceptors.response.use(
    response => {
        if (response.status === 200) {// 如果返回的状态码为200,说明接口请求成功
            return Promise.resolve(response);
        } else { // 否则的话抛出错误
            return Promise.reject(response);
        }
    },
    error => { // 服务器状态码不是2开头的的情况,跟后台协商好统一的错误状态码
        if (error.response) {
            errorHandle(error.response.status, error.response.data)
            return Promise.reject(error.response);
        }
    }
)

// 封装 接口错误信息报错函数
const errorHandle = (status) => {// 状态码判断
    switch (status) {
        case 401:  // 401: 未登录状态,跳转登录页
            toLogin();
            break;
        case 403: // 403 token过期,清除token并跳转登录页
            console.log('登录过期,请重新登录');
            localStorage.removeItem('token');
            setTimeout(() => {
                toLogin();
            }, 1000);
            break;
        case 404:  // 404请求不存在
            console.log('请求的资源不存在');
            break;
        default:
            console.log('其他错误信息')
    }
}

// 7,封装请求方式  对应get/post请求
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios.get(url, params)
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data)
            })
    })
}
export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params)
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data)
            })
    })
}

api.js

export function getProcinst ('xxxxx', params) {
  return get(url, params)
}

在main.js中,设置vue原型上

import api from './network/api' 
Vue.prototype.$api = api; // 将api挂载到vue的原型上

相关文章

  • vue常见问题(2)

    axios封装和api接口的统一管理 定时器问题 rem文件的导入问题 组件中写选项的顺序 开启gzip压缩代码 ...

  • Vue.js动态组件解析

    此前的Vue.js系列文章: Vue.js开发常见问题解析 Vue.js常用开发知识简要入门(一) Vue.js常...

  • vue常见问题一

    Vue常见问题 vue中的template只能有一个根元素例如: 以上的这段代码是错误的,因为vue的templa...

  • vue项目常见问题

    vue项目常见问题 1. 如何输出HTML? vue 语法中的“Mustache”语法 (双大括号) 只会将数据解...

  • 【转载】vue动态路由的实现思路及踩坑

    原文:Vue Router 实现动态路由和常见问题及解决方法 Vue项目实现动态路由的方式大体可分为两种: 前端将...

  • nginx下转发VUE静态资源 & 常见安全配置

    1.vue资源build 5.常见问题 5.1 浏览器CSP限制 (Content-Security-Policy...

  • 17.拓展:Vue.js 面试、常见问题答疑

    拓展:Vue.js 面试、常见问题答疑 在过去的很多面试中,我会经常问候选人一些关于 Vue.js 的问题。这些问...

  • visual code 常见问题

    使用visual code 开发vue工程常见问题     visual code 是一款功能强大且轻巧的免费代码...

  • VUE的某些常见问题及解决方法

    VUE的某些常见问题及解决方法 双向绑定数据,界面未渲染? 最近做vue项目的过程中,经常碰到会有双向绑定数据,d...

  • Vue常见问题

    1. 父子组件间通信 父组件传递数据给子组件(通过props属性来实现) 子组件通过props来接收数据 子组件与...

网友评论

      本文标题:vue常见问题(2)

      本文链接:https://www.haomeiwen.com/subject/gthliktx.html