uni-app快速入门(十一)--常用JS API(上)

在前面学习了uni-app的布局、组件、路由等知识点以后,还要掌握uni-app的JS API ,也可以理解为基于uni-app的java script。本节介绍uni-app的request请求、文件上传、数据缓存、获取位置、获取系统信息、获取手机的网络状态、拨打电话API。

一、request请求

使用uni.request 向服务器端发送请求。下面是调用示例:

uni.request({

url: 'https://xxx.com/api/v1/business/info?stId=123',//get参数可以写到地址栏里

method:"GET",

success: (res) => {

console.log(res);

this.logo=res.data.data.logo;

}})

对于method为POST模式的,传参可在method下面加data:{},另外使用POST提交需要在header中指定content-type:

uni.request({

url:"https://www.abc.com/api/v1/goods/info",

method:"POST",

data:{

"store_id":"1234"

},

header:{

"Content-Type":"application/x-www-form-urlencoded"

},

success:(res)=>{

console.log(res);

this.classifys=res.data.data;

}

})

【promise方式请求数据】

uni-app内部对request进行了promise封装,返回的第一个参数是错误对象,第二个参数是返回数据,示例如下:

uri.request({...}).then((data)=>{ //data为一个数组,第一项为错误信息,第二项为返回数据

let [err,res]=data;//使用解构的方式获取数组的值

if(res.data.code==200){

this.notice = res.data.data.notice;//获取返回值示例

}

}

二、uploadFile文件上传

uploadFile可以将本地资源上传到服务器,客户端发起一个POST请求,其中content-type为multipart/form-data,详细用法参考uni-app官网:

uni.uploadFile(OBJECT) | uni-app官网uni-app,uniCloud,serverless,uni.uploadFile(OBJECT),参数 HarmonyOS Next 兼容性,UploadFileSuccess 的属性值,UploadFileFail 的属性值,返回值 HarmonyOS Next 兼容性,UploadTask https://uniapp.dcloud.net.cn/api/request/network-file.html示例代码:

多文件上传:在实际开发中有很多场景需要批量上传文件,微信小程序只支持单文件上传,多文件上传需要循环调用uni.uploadFile(),就是在tempFilePaths获取到文件之后,判断:

if(tempFilePaths.length>0){

for(let i=0;i<tempFilePaths.length;i++){

uni.uploadFile({

url:'http://...',

filePath:tempFilePaths[i],

......

})

}

}

三、数据缓存

数据缓存可以将数据存储在本地缓存中,实现长期保存数据的功能,包括异步缓存和同步缓存,异步设置缓存为uni.setStorage,获取为uni.getStorage,删除为removeStorage,清除所有为clearStorage,同步设置缓存为setStorageSync,获取为getStorageSync,删除为removeStorageSync,清除所有为clerStorgeSync。

setStorage设置缓存:

uni.setStorage({

key:'name',data:'张三',success:()=>{ console.log('success');}

})

//获取缓存的值

uni.getStorage({

key:"name",success:(res)=>{console.log(res.data); }//结果为张三

})

//删除缓存值

uni.removeStorage({

key:'name',success:function(res){console.log('success');}

})

//清除所有:

uni.clearStorage();

//同步的方式比较简单:

uni.setSorageSync('name','张三');

let name = uni.getStorageSync('name');

uni.removeStorageSync('name');

四、获取位置

获取当前位置可实现查找附近的人、店铺、地图定位、详细地址、所在城市等信息。官方介绍见:

uni.getLocation(OBJECT) | uni-app官网uni-app,uniCloud,serverless,uni.getLocation(OBJECT),uni.chooseLocation(OBJECT),三方定位和地图服务收费说明,unicloud-city-select 城市选择组件,【福利】高德拉新活动https://uniapp.dcloud.net.cn/api/location/location.html示例:

uni.getLocation({

type: 'wgs84',

success: function (res) {

console.log('当前位置的经度:' + res.longitude);

console.log('当前位置的纬度:' + res.latitude);

}

});

【配合map组件将我的位置显示在地图上】:

获取到我的位置后,然后可以把这个坐标设置到地图插件上,不过获取位置需要小程序开放隐私权限。下面是示例代码:

<template>

<view>

<map class="map" :latitude="latitude" :longitude="longitude" :markers="markers"></map>

</view>

</template>

<script>

export default {

name: "location",

data(){

return {

latitude:"", //纬度

longitude:"", //经度

markers:[

{

latitude:"",

longitude:"",

iconPath:"../../static/images/map/my.png",

width:30,

height:30

}

]

}

},

onLoad(){

uni.getLocation({

type: 'gcj02',

success: (res)=> {

console.log('当前位置的经度:' + res.longitude);

console.log('当前位置的纬度:' + res.latitude);

this.latitude=res.latitude;

this.longitude=res.longitude;

this.markers[0].latitude=this.latitude;

this.markers[0].longitude=this.longitude;

}

});

}

}

</script>

<style scoped>

.map{width:100%;height:500rpx;}

</style>

五、获取系统信息

使用uni.getSystemInfo()和uni.getSystemInfoSync()可获取手机品牌、型号、屏幕宽度、高度、操作系统版本等信息,具体可参考uni-app官方文档:

nulluni-app,uniCloud,serverless,系统信息的概念,uni.getSystemInfo(OBJECT),success 返回参数说明,参数 HarmonyOS Next 兼容性,GetSystemInfoResult 的属性值,某些小程序特殊的返回参数,不推荐使用的返回参数,仅为https://uniapp.dcloud.net.cn/api/system/info.html

六、获取网络状态

使用uni.getNetworkType可以获取网络状态。如果用户使用的非Wi-Fi网络,可提示 用户注意手机流量。网络状态划分为:wifi、2g 、3g、4g 、ethernet、unknown、none,调用方式:

uni.getNetworkType({

success: (res)=>{

this.networkType = res.networkType;

}

})

另外还可以在onReady()事件中,使用uni.onNetworkStatusChange监听网络状态变化,代码如下:

onReady(){

uni.onNetworkStatusChange(function(res){

console.log(res.insConnected);//是否有网络

console.log(res.networkType);//当前的网络类型

});

}

七、拨打电话

拨打电话兼容所有平台,使用uni.makePhoneCall,示例:

uni.makePhoneCall({

phoneNumber:'12345'

})

相关推荐
printf_82413 分钟前
基于uniapp开发的微信H5图片上传压缩
uni-app
蜕变菜鸟4 小时前
UNI-APP小程序答题功能开发(左右滑动,判断,填空,问答,答题卡,纠错,做题倒计时等)
小程序·uni-app
阿斌_bingyu7094 小时前
uniapp Uview上传图片组件Upload会自动刷新
uni-app
九帅羽4 小时前
在应用启动时,使用 UniApp 提供的 API 检查和请求权限。
uni-app
秋田君4 小时前
Uniapp运行环境判断和解决跨端兼容性详解
uni-app
chen_sir_sh4 小时前
使用uniapp开发微信小程序使用uni_modules导致主包文件过大,无法发布的解决方法
微信小程序·uni-app·notepad++
Mr阿斌4 小时前
uniapp h5 实现扫扫二维码
uni-app
草字4 小时前
uniapp 修改网页标题title
java·服务器·uni-app
baozhengw4 小时前
uni-app快速入门(八)--常用内置组件(上)
java·前端·uni-app