1. 安装vue项目 npm init webpack project
2 安装iview npm i iview --save (这里是结合iview框架使用的 可根据自己的需求安装 当然也可以不安装)
3 在src目录下建一个utils文件夹 里面需要放5个js 都是封装好的js文件 功能不仅仅局限于加密 可以研究一下 你会学到很多东西
1.api.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/**
* 为vue实例添加http方法
* Vue.use(http)
*/
import http from './http'
export default {
/**
* install钩子
* @param {Vue} Vue Vue
*/
install (Vue) {
Vue.prototype.http = http
}
}
|
2. filters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// 公共使用的filters
import Vue from 'vue' ;
import {getTime, getPrdType} from '../utils/time' ;
// 区分支付方式的filter
Vue.filter( 'paywayType' , function (value) {
return value;
});
// 时间
Vue.filter( 'newdate' , function (value) {
return getTime(value);
});
// 时间-分钟
Vue.filter( 'minute' , function (str, n) {
const num = parseInt(n);
return str.split( ' ' )[num];
});
// 分割以:连接多个参数的string
Vue.filter( 'valStr' , function (str, n) {
const num = parseInt(n);
return str.split( ':' )[num];
});
// 根据提供时间计算倒计时
Vue.filter( 'countDown' , function (str) {
const dateStr = new Date(str).getTime();
const timeNow = new Date().getTime();
const countDown = dateStr - timeNow;
const countDownDay = Math.floor((dateStr - timeNow) / 86400000); // 计算剩余天数
const countDownHour = Math.floor((dateStr - timeNow) / 3600000 % 24); // 计算剩余小时
const countDownMin = Math.floor((dateStr - timeNow) / 60000 % 60); // 计算剩余分钟
// const countDownSec = Math.floor((dateStr - timeNow) / 1000 % 60);// 计算剩余秒
if (countDown <= 0) {
return '- - - -' ;
} else {
return countDownDay + '天' + countDownHour + '小时' + countDownMin + '分钟' ;
}
});
// 取绝对值
Vue.filter( 'numberFn' , function (numberStr) {
return Math.abs(numberStr);
});
// 处理图片地址的filter
Vue.filter( 'imgSrc' , function (src) {
const env = getPrdType();
switch (env) {
case 'pre' :
return `https: //preres.bldz.com/${src}`;
case 'pro' :
return `https: //res.bldz.com/${src}`;
case 'test' :
default :
return `https: //testimg.bldz.com/${src}`;
}
});
// 直接转化剩余时间
Vue.filter( 'dateShow' , function (dateStr) {
const countDownDay = Math.floor(dateStr / 86400); // 计算剩余天数
const countDownHour = Math.floor(dateStr / 3600 % 24); // 计算剩余小时
const countDownMin = Math.floor(dateStr / 60 % 60); // 计算剩余分钟
// const countDownSec = Math.floor((dateStr - timeNow) / 1000 % 60);// 计算剩余秒
if (dateStr <= 0) {
return '- - - -' ;
} else if (countDownDay <= 0 && countDownHour <= 0) {
return countDownMin + '分钟' ;
} else if (countDownDay <= 0) {
return countDownHour + '小时' + countDownMin + '分钟' ;
} else {
return countDownDay + '天' + countDownHour + '小时' + countDownMin + '分钟' ;
}
});
// 处理图片
Vue.filter( 'imgLazy' , function (src) {
return {
src,
error: '../static/images/load-failure.png' ,
loading: '../static/images/default-picture.png'
};
});
Vue.filter( 'imgHandler' , function (src) {
return src.replace(/,jpg/g, '.jpg' );
});
|
3.http.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import axios from 'axios'
import utils from '../utils/utils'
import {Modal} from 'iview'
// import qs from 'qs';
axios.defaults.timeout = 1000*60
axios.defaults.baseURL = ''
const defaultHeaders = {
Accept: 'application/json, text/plain, */*; charset=utf-8' ,
'Content-Type' : 'application/json; charset=utf-8' ,
Pragma: 'no-cache' ,
'Cache-Control' : 'no-cache'
}
// 设置默认头
Object.assign(axios.defaults.headers.common, defaultHeaders)
const methods = [ 'get' , 'post' , 'put' , 'delete' ]
const http = {}
methods.forEach(method => {
http[method] = axios[method].bind(axios)
})
export default http
export const addRequestInterceptor =
axios.interceptors.request.use.bind(axios.interceptors.request)
// request前自动添加api配置
addRequestInterceptor(
(config) => {
if (utils.getlocal( 'token' )) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.Authentication = utils.getlocal( 'token' )
}
// config.url = `/api${config.url}`
return config
},
(error) => {
return Promise.reject(error)
}
)
export const addResponseInterceptor =
axios.interceptors.response.use.bind(axios.interceptors.response)
addResponseInterceptor(
(response) => {
// 在这里统一前置处理请求响应
if (Number(response.status) === 200) {
// 全局notify有问题,还是自己处理吧
// return Promise.reject(response.data)
// window.location.href = './'
// this.$router.push({ path: './' })
}
return Promise.resolve(response.data)
},
(error) => {
if (error.response) {
const id="codetool">
4. time.js
5 utils.js
4.配置main.js
5.找到config文件夹下的dev.env.js
6.页面中具体使用方法
以上这篇vue接口请求加密实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。 原文链接:https://blog.csdn.net/xy19950125/article/details/83861156 延伸 · 阅读
精彩推荐
|