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'

})

相关推荐
web150850966417 小时前
在uniapp Vue3版本中如何解决webH5网页浏览器跨域的问题
前端·uni-app
何极光18 小时前
uniapp小程序样式穿透
前端·小程序·uni-app
User_undefined1 天前
uniapp Native.js 调用安卓arr原生service
android·javascript·uni-app
流氓也是种气质 _Cookie1 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
爱笑的眼睛111 天前
uniapp 极速上手鸿蒙开发
华为·uni-app·harmonyos
鱼樱前端2 天前
uni-app框架核心/常用API梳理一(数据缓存)
前端·uni-app
阿琳a_2 天前
解决uniapp中使用axios在真机和模拟器下请求报错问题
前端·javascript·uni-app
三天不学习2 天前
uni-app 跨端开发精美开源UI框架推荐
ui·uni-app·开源
多客软件佳佳2 天前
便捷的线上游戏陪玩、线下家政预约以及语音陪聊服务怎么做?系统代码解析
前端·游戏·小程序·前端框架·uni-app·交友
洗发水很好用2 天前
uniApp上传文件踩坑日记
uni-app