全端开发之uniapp开箱即用vue/cli版

810 阅读1分钟

感谢大家阅读,文章会持续更新。

项目地址: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