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 相关文章
热门资讯 |