uni-app学习

本文分享了将线上项目迁移到uni-app的过程,包括接口封装、请求数据、手机号验证、base64处理等实用技巧。在开发中遇到了base64图片显示和图片间距问题,并给出了解决方案。此外,还介绍了防止页面滚动、手动实现60秒倒计时等知识点,虽然项目规模不大,但积累了宝贵经验。
摘要由CSDN通过智能技术生成

先说一下自己的心得在把线上项目改成uni-app之后,我属实觉得哪里都是坑啊,而且还没有任何招架之力,只能硬着头皮改了

感觉心力交瘁,因为用了整整一天时间把项目写出来,我只休息了4个小时,感觉也快在猝死的边缘徘徊了。

不过对大佬来说就都是小事,我就是个菜菜~

1、封装接口以及规范

首先就是所有的页面公用的方法必须要在main.js中引入

然后挂载到Vue原型链上

然后就可以在所有的页面通过你挂载的属性名进行引用

很简单的步骤,相信大家上手都会很快

1.1 请求数据接口封装

主要是对请求的过程进行一个封装,但是觉得其实还可以多加改善

params:options接收一个对象,对请求地址、请求方法以及数据进行传参

封装方法:
export const doAjax = (options) =>{
	return new Promise((resolve,reject)=>{
		uni.showLoading({
		    title: '加载中'
		});
		uni.request({
			url:options.url,
			method:options.method || 'GET',
			data:options.data || {},
			success:(res)=>{
				uni.hideLoading();
				resolve(res.data);
			},
			fail:(err) =>{
				uni.showToast({
					title:"系统繁忙,请稍后再试"  
				});
				reject(err);
			}
		})
	})
};
使用方式:
1、引入
import {doAjax,isPhoneNumber,handleWrap} from './common/util.js'
2、挂载
Vue.prototype.$doAjax = doAjax
3、使用
async getchartCode(){
    let param = {
        "headerInfo": { "functionCode": "getPicRandomCode"},
        "requestContent":{"sessionid":this.pageData.sessionid || ""}
    }
    const res = await this.$doAjax({
        //#ifdef H5
        url: 'http://wapapp01.zsc.189.cn/wapclient/queryAward.do',  //这里分两种方式主要是因为h5跨域问题
        //#endif
        //#ifndef H5 
        url: 'http://wapapp01.zsc.189.cn/wapclient/queryAward.do',
        //#endif
        method: 'POST',
        data: param
    })
}
1.2 判断手机号是否符合

param:obj代表要进行正则判断的手机号码

封装方法
export const isPhoneNumber = (obj) =>{
	let phoneID = /^((13|14|15|16|17|18|19)){1}\d{9}$/;
	if(!phoneID.test(obj)){
		return false;
	}else{
		return true;
	}
};

使用方式:
if(!this.$isPhoneNumber(this.pageDom.phoneNum)){
    this.errTipFun(this.errTip.e001);  //手机号输入错误
    return false;
}
1.3 对base64位长编码返回的换行进行处理

param:chart代表要进行转换的64位图片

封装方法:
export const handleWrap = (chart) =>{
	let base64 = chart.replace(/[\r\n]/g, "");
	return base64;
}

使用方式:
let res = this.$handleWrap(data.randomData)  //data.randomData代表base64位内容
2、在开发过程中遇到的坑

干活首先脑子要灵活,我因为一点小问题也有困扰我一个小时的,太难了

2.1 base64位图片不能显示

具体原因就是因为base64位返回的长编码代有换行,不能自己转换

但是uni-app底层又是通过背景图片进行显示图片的,base64位图片不经过处理通过img可以显示,但是使用背景就不好显示了

2.2 图片与图片同时使用会有一点间距

因为啥我也不知道,我自己上手使用margin-top调了调

3、总结的知识点
3.1 在弹窗滑动阻止页面滚动

在要滚动的区域添加上@touchmove.stop.prevent="moveHandle"就可以阻止滚动

用的十分顺手啊!!

3.2 手动实现倒计时60s

可能有什么bug 但是目前没发现 ,发现也别讲出来,把正确的发给我就好

方法:
reduceCount:function(){ 
    if(!this.pageDom.randomNum){  //倒计时结束
    	clearInterval(this.time);  //清除计时器
        this.pageDom.randomText = '重新获取'  //将文本改为重新获取
        this.getchartCode();  //获取校验码 
        this.flagArr.randombtnflag = true;  //获取验证码显示 倒计时隐藏
        this.pageDom.randomNum = 60;  //将倒计时重新开始
        this.pageDom.randomCode = '';  //将短信验证码文本置空
    }else{
    	--this.pageDom.randomNum;  //每隔1s减一次
    }
},
调用:
this.time = setInterval(this.reduceCount,1000);  //开启倒计时
3.3 源码地址

移步github

虽然项目中并没有用到必须的tabbar还有跳转等基础的API,但是也学到了很多,项目虽小,但也可以积累经验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值