感谢大家阅读,文章会持续更新。
项目地址:github.com/huangsishen…
安装说明:
-
全局安装vue/cli: npm install -g @vue/cli
-
快速安装项目: vue create -p dcloudio/uni-preset-vue projectName
目录结构:
路由/fly封装:
/* 封装页面跳转 */
// 保留当前页面,跳转到应用内某页面
function push({
url
}) {
uni.navigateTo({
url: url,
animationType: 'slide-in-right'
})
}
// 关闭当前页面,跳转到应用内某页面
function replace({
url
}) {
uni.redirectTo({
url: url
})
}
// 关闭当前页面,返回上一页面或多级页面
function back(delta = 1) {
uni.navigateBack({
// 需要返回的页面数
delta: delta,
animationType: 'slide-in-left'
})
}
// 关闭所有页面并调跳到某页面
function reLaunch({
url
}) {
uni.reLaunch({
url: url
})
}
// 跳转到其他tabbar页面,并且关闭所有非tabbar页面
function switchtab({
url
}) {
uni.switchTab({
url: url
})
}
export default {
push,
replace,
back,
reLaunch,
switchtab
}
fly.interceptors.request.use((request) => {
// 在发送请求之前做些什么
// if (token) {
// request.headers['token'] = token
// }
loadingToast('加载中...')
return request
}, function(error) {
// 对请求错误做些什么
return Promise.reject(error)
})
// 添加响应拦截器
fly.interceptors.response.use((res) => {
// 对响应数据做些事
loadingToast()
if (res) { if (res.status === 400 || res.status === 401 || res.status === 403) {
textToast('登录失效')
router.replace({
url: '/pages/login/index'
})
} else if (res.status === 500 || res.status === 502 || res.status === 503) {
textToast('暂无信息')
}
return Promise.reject(error)
} else {
textToast('连接超时,请稍后再试')
return Promise.reject({
response: {
data: {
code: -1000,
message: "连接超时,请稍后再试"
}
}
})
} return Promise.resolve(res)
}, (error) => {
loadingToast()
return Promise.reject(error)})
export default fly