记,第一个独立完成的项目Q

编程入门 行业动态 更新时间:2024-10-08 18:39:09

记,<a href=https://www.elefans.com/category/jswz/34/1770593.html style=第一个独立完成的项目Q"/>

记,第一个独立完成的项目Q

问题如下

  1. 根据接口请求地址变更需求
    因为想要打包后也可以在服务端直接修改请求接口的地址,所以在public文件夹下新建config.js(public文件存储静态资源的,放在public目录下的资源会被直接复制,不会经过webpack的打包处理)
//将变量直接挂载到 window 上
window.Global = {baseURL: 'http://xxxxx',// baseURL: 'http://xxxxx',
}

之后在index.html中引用

 <script src="./static/js/config.js" type="text/javascript"></script>

在整个项目中就可以直接通过 window.Global.baseURL 取到

2.将axios请求封装一下

//在这里配置axios实例,可以新建多个来请求不同域名
const service = axios.create({})
import axios from 'axios'
import { Message,Loading} from 'element-ui';
import router from "../router"const service = axios.create({baseURL: window.Global.baseURL,	//请求地址,使用的config.js定义的地址timeout: 3 * 10000	//响应超时
})//为项目中统一配置页面加载loading定义一个变量
let loadingInstance// 2.请求拦截器
service.interceptors.request.use(config => {config.data = JSON.stringify(config.data); //数据转化config.headers = {'Content-Type':'application/json ' }//请求接口数据时,需要loadingloadingInstance = Loading.service({ text: "请稍等...",background: 'rgba(0, 0, 0, 0.8)',fullscreen: true })return config
}, error => {//请求出错,显示错误信息并关闭loadingloadingInstance.close()Promise.reject(error)
})// 3.响应拦截器
service.interceptors.response.use(response => {//接收到响应数据并成功后的一些共有的处理,关闭loading等 if (loadingInstance) {loadingInstance.close()}return response
}, error => {loadingInstance.close()//以下是对返回不同代码进行的相应提示,举个例子显示if (error && error.response) {switch (error.response.status) {case 400:Message({message: "错误请求",type: "error"});break;default:Message({message: `连接错误${error.response.status}`,type: "error"});}} else {if (JSON.stringify(error).includes('timeout')) {Message({message: "服务器响应超时,请刷新当前页",type: "error"});}Message({message: "连接服务器失败",type: "error"});}Message.error(error.message)return Promise.resolve(error.response)
})
export default service	//给一个出口用来导出

3.使用localStorage暂存用户信息

起初只是在一个页面用到,所以只在一个模块页面 import 进 js
后面有需求需要每个页面都要获取当前用户信息,就在 main.js 引入后使用,挂载到vue的原型上

localStorage.js

var storage={set(key,value){localStorage.setItem(key,JSON.stringify(value));},get(key){return JSON.parse(localStorage.getItem(key));},remove(key){localStorage.removeItem(key);} 
}
export default storage;

main.js

import storage from './utils/localstorage'
Vue.prototype.storage = storage
随即在各个页面中就可以通过	this.storage	使用
this.storage.set("user", res.data);
let user = this.storage.get("user");

4.select框选中但是页面没有更新多选框的选中状态

页面上显示的内容未更新,此时就可以使用$forceUpdate强制更新下

if (val.isCheck == true) {this.checkList.push(val.OID);this.$forceUpdate();
}

更多推荐

记,第一个独立完成的项目Q

本文发布于:2024-02-25 06:15:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698069.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第一个   独立   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!