uni-app全局文件与常用API

news2024/11/20 1:20:35

文章目录

  • rpx响应式单位
  • @import导入css样式及scss变量用法与static目录
    • import导入css样式
    • uni.scss变量用法
  • pages.json页面路由
    • globalStyle的属性
    • pages设置页面路径及窗口表现
    • tabBar设置底部菜单选项及iconfont图标
  • vite.config中安装插件unplugin-auto-import自动导入vue和uniapp
  • uni-api交互反馈
    • uni.showToast
    • uni.hideToast
    • uni.showLoading
    • uni.showModal
    • uni.showActionSheet
  • 动态设置页面导航栏样式
    • uni.setNavigationBarTitle
    • uni.setNavigationBarColor
    • uni.showNavigationBarLoading
    • uni.hideHomeButton
  • 动态设置TabBar样式
    • uni.setTabBarItem
    • uni.setTabBarStyle
    • uni.hideTabBar
    • uni.showTabBar
    • uni.setTabBarBadge
    • uni.removeTabBarBadge
    • uni.showTabBarRedDot
    • uni.hideTabBarRedDot
  • 下拉刷新 onPullDownRefresh
    • uni.startPullDownRefresh(OBJECT)
    • uni.stopPullDownRefresh()
  • 页面和路由
    • uni.navigateTo(OBJECT)
    • uni.reLaunch(OBJECT)
    • uni.navigateBack(OBJECT)
  • StorageSync数据缓存API
    • uni.setStorage
    • uni.setStorageSync(KEY,DATA)
    • uni.getStorage
    • uni.getStorageSync(KEY)
    • uni.getStorageInfo
    • uni.getStorageInfoSync()
    • uni.removeStorage(OBJECT)
    • uni.removeStorageSync(KEY)
    • uni.clearStorage()
    • uni.clearStorageSync()
  • 网络
    • uni.request发起网路请求3种回调结果调用
    • uni.request参数
      • data
      • method有效值
      • header
      • timeout

rpx响应式单位

rpx 即响应式 px,一种根据屏幕宽度自适应的动态单位。以 750 宽的屏幕为基准,750rpx 恰好为屏幕宽度。也就是说,在拿到设计稿后,要把稿件宽度等比缩放为750,再测量各区域的大小。在MasterGo,即时设计中都有相应的功能。

@import导入css样式及scss变量用法与static目录

import导入css样式

之前都是在页面中定义CSS,现在再介绍两种写入css样式的方法。
一种是在主组件app.vue中定义页面的公共css,这样定义可以作用于整个程序,但它的权重是最低的。
在这里插入图片描述
还有一种方法是,把这些css都放到一个公共的目录common中去:
先创建common目录:选中项目-新建-目录
在这里插入图片描述
新建好后,可以在里面创建.css文件,就可以在里面设置CSS样式了,最后,去app.vue的style中导入这个css样式,代码如下:

<style lang="scss">
	@import "@/common/css/style.css";
</style>

效果跟在公共css中写入是一样的,这种写法使整个程序更有条理些。

uni.scss变量用法

在项目根目录中有个uni.scss文件
在这里插入图片描述
打开后,里面有很多内置的样式变量,可以直接拿来用的,现在拿个文字颜色过来试试,注意只需要取"$“至”:" 前的内容即可
在这里插入图片描述
放到Style中,就可以正常使用了:

<style lang="scss" scoped>
	.layout{
		font-size: 70rpx;
		color: $uni-color-primary;
	}
</style>

我们也可以在uni.scss中自己自定义样式的,模仿它的格式,比如像这样,记住要以$符号开头:

$custom-color-1:blue;
$custom-color-2:yellow;

这里要注意的是,uni.scss是预编译的,在我们自定义后,需要重启一下,才可以使用自定义的样式。

可以给自定义的样式单独创建一个scss文件,然后再去在uni.scss中引入:

@import"@/common/scss/self.scss" ;

pages.json页面路由

globalStyle的属性

pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。打开pages.json,这是globalStyle区域的代码,在其中也是可以配置单个页面的,单个页面的权重是大于globalStyle,下面是备注过的代码:

{
	"pages": [ 
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",//导航栏标题颜色,仅支持black/white
		"navigationBarTitleText": "uni-app",//导航栏文字内容
		"navigationBarBackgroundColor": "#2B9939",// 导航栏背景颜色
		navigationStyle:"custom"//导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏
		"enablePullDownRefresh":true,//是否开启下拉刷新
		"backgroundColor": "#F8F8F8"//下拉显示出来的窗口背景色,仅微信小程序支持
		"backgroundTextStyle":"light"//下拉 loading 的样式,仅支持 dark / light
		"onReachBottomDistance":250//页面上拉触底事件触发时距页面底部距离,单位只支持px
	},
	
	"uniIdRouter": {}
}

其中onReachBottomDistance属性要配合生命周期onReachBottom使用的,该属性表示页面触底事件触发时距页面底部距离,默认值是50。现在在页面中写上onReachBottom来测试一下,代码如下:

<template>
	<view class="layout">
		<view class="box" v-for="item in 100">
			{{item}}
		</view>
	</view>
</template>

<script setup>
import {onReachBottom} from "@dcloudio/uni-app"	
onReachBottom(()=>{
	console.log("到底了");
})
</script>

<style lang="scss" scoped>
	.layout{
		font-size: 70rpx;
		color: $custom-color-2;
	}
</style>

效果:
在这里插入图片描述

pages设置页面路径及窗口表现

通过pages,可以对单个页面进行设置:uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,代表着每个页面,其属性值如下:
在这里插入图片描述
pages中Style配置项跟刚刚讲过的globalStyle一样,在这里就不多说了,它的权重是要高于 globalStyle的。

tabBar设置底部菜单选项及iconfont图标

tabBar设置的就是小程序底部的菜单栏,一般来说list属性是必须的,List设置的是tab 的列表,最少2个,最多5个 tab,list是在数组中的,每个对象用大括号括起来,包括tabBar中的各种常用属性,都已做好备注在代码中了:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "页面"
			}
		},
		{
			"path" : "pages/user/user",
			"style" : 
			{
				"navigationBarTitleText" : "user"
			}
		},
		{
			"path" : "pages/classify/classify",
			"style" : 
			{
				"navigationBarTitleText" : ""
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",//导航栏标题颜色,仅支持black/white
		"navigationBarTitleText": "默认页面",//导航栏文字内容
		"navigationBarBackgroundColor": "#2B9939",// 导航栏背景颜色
		"navigationStyle":"default",//导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏
		"enablePullDownRefresh":true,//是否开启下拉刷新
		"backgroundColor": "#CAF0DF",//下拉显示出来的窗口的背景色
		"backgroundTextStyle":"light",//下拉 loading 的样式,仅支持 dark / light
		"onReachBottomDistance":250
	},
	"tabBar": {
		"color": "#8b2671",//文字颜色
		"selectedColor": "#e9ccd3",//选中后文字颜色
		"list": [
			{
				"pagePath": "pages/index/index",//页面路径
				"text": "首页",//导航文字内容
				"iconPath": "static/tabBar/home.png",//未选中时的图片
				"selectedIconPath": "static/tabBar/home-h.png"//选中时的图片
			},{
				"pagePath": "pages/classify/classify",
				"text": "分类",
				"iconPath": "static/tabBar/classify.png",
				"selectedIconPath": "static/tabBar/classify-h.png"
			},{
				"pagePath": "pages/user/user",
				"text": "我的",
				"iconPath": "static/tabBar/user.png",
				"selectedIconPath": "static/tabBar/user-h.png"
			}
			
		]
	},
	"uniIdRouter": {}
}

效果:
在这里插入图片描述

vite.config中安装插件unplugin-auto-import自动导入vue和uniapp

之前使用生命周期钩子和ref时,每次都要写导入代码,安装一个插件,这样就可以免去导入的步骤了。

首先,安装 Node.js,然后右键项目-使用命令行窗口打开目录:
在这里插入图片描述
然后输入以下代码,按下回车。

npm install unplugin-auto-import

安装成功后,会出现一个node_modules文件夹。
在这里插入图片描述

继续进行设置,在根目录下创建一个vite.config.js文件夹,并拷贝以下代码:

import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import AutoImport from 'unplugin-auto-import/vite'
 
export default defineConfig({
    plugins: [
        uni(),        
        // 自动导入配置
        AutoImport({
            imports:[
                // 预设
                'vue',
                'uni-app'                
            ]
        })
    ]    
})

设置完毕,现在把导入的vue和uniapp去掉, 也可以正常使用了。

uni-api交互反馈

uni.showToast

显示消息提示框,参数如下:
在这里插入图片描述
常用的一般有title,即提示框的提示内容;
icon,提示框图标,默认是success,有以下值:
在这里插入图片描述
image,自定义图标。演示一下上面几种参数,代码如下:

<template>
	<view class="layout">
		<view class="box" v-for="item in 100">
			{{item}}
		</view>
	</view>
</template>

<script setup>
uni.showToast({
	title:"操作失败",
	icon:"error"    ,//单行显示,去掉图标就可以多行显示了
	image:"../../static/tabBar/user.png"
})
</script>

<style lang="scss" scoped>
	.layout{
		font-size: 70rpx;
		color: $custom-color-2;
	}
</style>

效果:
在这里插入图片描述
mask参数,即消息提示框未消失时,无法点击页面的其他操作。先设置mask参数为false,设置一个页面跳转,注意navigator默认只能跳转到非TabBar界面,要是想跳转到TabBar界面,要使用reLaunch属性,代码如下:

<template>
	<view class="layout">
		<navigator open-type="reLaunch" url="/pages/user/user">用户</navigator> 
		<view class="box" v-for="item in 100">
			{{item}}
		</view>
	</view>
</template>

<script setup>
uni.showToast({
	title:"操作失败",
	icon:'error',//单行显示,去掉图标就可以多行显示了
	image:"../../static/tabBar/user.png",
	mask:false
})
</script>

<style lang="scss" scoped>
	.layout{
		font-size: 70rpx;
	}
</style>

提示框未消失,依然可以点击页面跳转按钮:
在这里插入图片描述
修改mask参数为true,在提示框未消失前,是无法点击跳转按钮的:
在这里插入图片描述

uni.hideToast

隐藏消息提示框,我们用个按钮来演示一下uni.hideToast,代码如下:

<template>
	<view class="layout">
		<navigator open-type="reLaunch" url="/pages/user/user">用户</navigator>
		<button @click="show">显示</button>
		<button @click="hide">隐藏</button>
		<view class="box" v-for="item in 100">
			{{item}}
		</view>
	</view>
</template>

<script setup>
	function show(){
		uni.showToast({
			title:"操作失败",
			duration:3000,  //提示的延迟时间,单位毫秒,默认:1500
		})
	}
	function hide(){
		uni.hideToast()
	}

</script>

<style lang="scss" scoped>
	.layout{
		font-size: 70rpx;
	}
</style>

效果:
在这里插入图片描述

uni.showLoading

显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。这里我们设置2秒后关闭Loading提示框
演示代码如下:

<template>
	<view class="">
		个人中心
	</view>
</template>

<script setup>
	uni.showLoading({
		title:"加载中...",
		mask:true
	})
	setTimeout(()=>{
		uni.hideLoading()
	},2000)
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述

uni.showModal

显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。比如说用户要删除某个东西,这时就可以弹窗询问是否要删除。演示代码如下:

<template>
	<view class="">
		分类页面
		<button @click="remove">删除</button>
	</view>
</template>

<script setup>
	function remove(){
		uni.showModal({
			title:"是否删除?"
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述
uni.showModal的参数如下:
在这里插入图片描述
取消按钮、确认按钮的文字颜色,提示的内容标题都可以自定义。

现在演示一下后三个参数,以success为例,它会给我们一个回调函数,拿到这个回调函数我们可以让它返回一个提示弹窗:“删除成功”,代码如下:

<template>
	<view class="">
		分类页面
		<button @click="remove">删除</button>
	</view>
</template>

<script setup>
	function remove(){
		uni.showModal({
			title:"是否删除?",
			// content:"删除后不会恢复",
			confirmColor:"#8b2671",
			confirmText:"Yes",
			editable:true,//显示输入框
			success:res=>{
				if(res.confirm){
					uni.showToast({
						title:"删除成功"
					})
				}
			}
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

效果:

这段代码中我们开始了输入框,在输入框中输入内容,点击确定后,可以回调输入的内容,拿到后我们可以做些输入判断、校验之类的操作。

uni.showActionSheet

从底部向上弹出操作菜单,参数如下:
在这里插入图片描述
比较重要的是itemList参数了,使用时,要用数组把内容框起来,演示代码如下:

<template>
	<view class="">
		分类页面
		
		<button @click="select">学历</button>
	</view>
</template>

<script setup>
	
	function select(){
		uni.showActionSheet({
			title:"请选择学历",//菜单标题
			itemList:["高中","大专","本科","研究生"],//选择项
			itemColor:"#ef475d",//按钮的文字颜色
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述
我们选择哪一项,也是通过success回调结果的,不过因为itemList是个数组,回调给我们的结果是索引值
在这里插入图片描述
要是想回调结果是实际内容,需要把数组设置为变量,代码如下:

<template>
	<view class="">
		分类页面
		<button @click="select">学历</button>
	</view>
</template>

<script setup>
	let arrs = ["高中","大专","本科","研究生"];
	function select(){
		uni.showActionSheet({
			title:"请选择学历",//菜单标题
			itemList:arrs,
			success:res=>{
				console.log(res)
				console.log(arrs[res.tapIndex]);
			}
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

动态设置页面导航栏样式

uni.setNavigationBarTitle

动态设置当前页面的标题。
演示一下,这里用定时器定时,让其2秒钟后改变标题:

<template>
	<view class="">
		分类页面
		<button @click="select">学历</button>
	</view>
</template>

<script setup>
	setTimeout(()=>{
		uni.setNavigationBarTitle({
			title:"动态标题"
		})
	},2000)
	
	let arrs = ["高中","大专","本科","研究生"];
	function select(){
		uni.showActionSheet({
			title:"请选择学历",//菜单标题
			itemList:arrs,
			success:res=>{
				console.log(res)
				console.log(arrs[res.tapIndex]);
			}
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述

uni.setNavigationBarColor

设置页面导航条颜色。
在这里插入图片描述

uni.showNavigationBarLoading

在当前页面显示导航条加载动画。它有点类似于uni.showLoading,如果想让它结束,再写上个uni.hideNavigationBarLoading就行了,演示代码:

<template>
	<view class="">
		分类页面
		<button @click="select">学历</button>
	</view>
</template>

<script setup>
	setTimeout(()=>{
		uni.hideNavigationBarLoading({
			
		})
	},2000)
	uni.showNavigationBarLoading({})
	
	let arrs = ["高中","大专","本科","研究生"];
	function select(){
		uni.showActionSheet({
			title:"请选择学历",//菜单标题
			itemList:arrs,
			success:res=>{
				console.log(res)
				console.log(arrs[res.tapIndex]);
			}
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述

uni.hideHomeButton

隐藏返回首页按钮:非主页面的左上角都会默认有一个返回首页按钮,使用该API可以实现隐藏
在这里插入图片描述
隐藏后的效果:
在这里插入图片描述

动态设置TabBar样式

uni.setTabBarItem

动态设置 tabBar 某一项的内容。建议是在app.vue中设置,这样会应用于所有页面,演示代码如下:

<script>
	export default {
		onLaunch: function() {
			uni.setTabBarItem({
				index:1,
				text:"自定义"
			})
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	@import "@/common/css/style.css"
</style>

效果:
在这里插入图片描述
其他参数如图:
在这里插入图片描述

uni.setTabBarStyle

动态设置 tabBar 的整体样式。参数如图:
在这里插入图片描述

uni.hideTabBar

隐藏 tabBar。

uni.showTabBar

显示 tabBar。

uni.setTabBarBadge

为 tabBar 某一项的右上角添加文本。一般都是添加数字,文字太多的话显示不出来,代码如下:

<script>
	export default {
		onLaunch: function() {
			uni.setTabBarBadge({
				index:1,
				text:"99+"
			})
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	@import "@/common/css/style.css"
</style>

效果:
在这里插入图片描述

uni.removeTabBarBadge

移除 tabBar 某一项右上角的文本。

uni.showTabBarRedDot

显示 tabBar 某一项的右上角的红点。跟刚刚在tabBar右上角显示增加文本一样,这里是在右上角显示红点,代码如下:

<script>
	export default {
		onLaunch: function() {
			uni.setTabBarBadge({
				index:1,
				text:"99+"
			})
			uni.showTabBarRedDot({
				index:2,
			})
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	@import "@/common/css/style.css"
</style>

效果:
在这里插入图片描述

uni.hideTabBarRedDot

隐藏 tabBar 某一项的右上角的红点。刚刚我们设置了红点,现在可以在相应的页面中使用uni.hideTabBarRedDot去隐藏红点,代码如下:

<template>
	<view class="">
		个人中心
	</view>
</template>

<script setup>
	onShow(()=>{
		uni.hideTabBarRedDot({
			index:2
		})
	})
	uni.showLoading({
		title:"加载中...",
		mask:true
	})
</script>

<style lang="scss" scoped>
	       
</style>


下拉刷新 onPullDownRefresh

下拉刷新操作,需要在 pages.json 里,找到的当前页面的pages节点,并在 style 选项中开启 enablePullDownRefresh。

uni.startPullDownRefresh(OBJECT)

开始下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。在这里我们可以用个定时器,设定一秒钟后开始刷新。

setTimeout(()=>{
		uni.startPullDownRefresh()
	},1000)

uni.stopPullDownRefresh()

停止当前页面下拉刷新。代码如下:

<template>
	<view class="content">
		<button @click="stop">停止</button>
	</view>
</template>

<script>
	setTimeout(()=>{
		uni.startPullDownRefresh()
	},1000)
	function stop(){
		uni.stopPullDownRefresh()
	}
</script>

<style>
	
</style>

效果:
在这里插入图片描述

页面和路由

uni.navigateTo(OBJECT)

保留当前页面,跳转到应用内的某个页面。使用uni.navigateBack可以返回到原页面。
其实跟navigator一样的作用,新建demo1和demo2两个页面,点击后从demo1跳转到demo2,代码如下:

<template>
	<view class="">
		<view @click="goDemo2">跳转到demo2</view>
	</view>
</template>

<script setup>
	function goDemo2(){
		uni.navigateTo({
			url:"/pages/demo2/demo2"
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

uni.reLaunch(OBJECT)

关闭所有页面,打开到应用内的某个页面。
刚刚navigateTo参数是没法跳转到TabBar页面的,但reLaunch可以,演示代码:

<template>
	<view class="">
		<view @click="goDemo2">跳转到classify</view>
	</view>
</template>

<script setup>
	function goDemo2(){
		uni.reLaunch({
			url:"/pages/classify/classify"
		})
	}
</script>

<style lang="scss" scoped>
	       
</style>

uni.navigateBack(OBJECT)

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。代码如下:

<template>
	<view class="">
		<button @click="goDemo1">返回Demo1</button>
	</view>
</template>

<script setup>
	function goDemo1(){
		uni.navigateBack()
	}
	console.log(getCurrentPages())
</script>

<style lang="scss" scoped>
	       
</style>

效果:
在这里插入图片描述

StorageSync数据缓存API

uni.setStorage

将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。

uni.setStorageSync(KEY,DATA)

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

<template>
	<view class="content">
		
	</view>
</template>

<script setup>
	uni.setStorageSync('key1','hello moto')
	uni.setStorageSync('key2','王二麻子')
	uni.setStorageSync("arrs",["one","two","three"]);
</script>

<style scoped>
	
</style>

查看缓存的值:

uni.getStorage

从本地缓存中异步获取指定 key 对应的内容。

uni.getStorageSync(KEY)

从本地缓存中同步获取指定 key 对应的内容。使用这个参数取key1的值,代码如下:

<template>
	<view class="content">
		
	</view>
</template>

<script setup>
	uni.setStorageSync('key1','hello moto')
	uni.setStorageSync('key2','王二麻子')
	uni.setStorageSync("arrs",["one","two","three"]);
	
	let myName = uni.getStorageSync("key1")
	console.log(myName);
</script>

<style scoped>
	
</style>

取到值了:
在这里插入图片描述

uni.getStorageInfo

异步获取当前 storage 的相关信息。

uni.getStorageInfoSync()

同步获取当前 storage 的相关信息。简单来说,就是读取当前所有的key,演示代码:

<template>
	<view class="content">
		
	</view>
</template>

<script setup>
	uni.setStorageSync('key1','hello moto')
	uni.setStorageSync('key2','王二麻子')
	uni.setStorageSync("arrs",["one","two","three"]);
	
	let myName = uni.getStorageSync("key1")
	console.log(myName);
	
	const res = uni.getStorageInfoSync();
	console.log(res);
</script>

<style scoped>
	
</style>

效果:
在这里插入图片描述

uni.removeStorage(OBJECT)

从本地缓存中异步移除指定 key。

uni.removeStorageSync(KEY)

从本地缓存中同步移除指定 key。写个简单的代码演示一下:

<template>
	<view class="content">
		<button @click="remove">删除key2</button>
	</view>
</template>

<script setup>
	uni.setStorageSync('key1','hello moto')
	uni.setStorageSync('key2','王二麻子')
	uni.setStorageSync("arrs",["one","two","three"]);
	
	let myName = uni.getStorageSync("key1")
	console.log(myName);
	
	const res = uni.getStorageInfoSync();
	console.log(res);
	function remove(){
		uni.removeStorageSync("key2")
	}
</script>

<style scoped>
	
</style>

效果:
在这里插入图片描述

uni.clearStorage()

清理本地数据缓存。

uni.clearStorageSync()

同步清理本地数据缓存。演示代码如下:

<template>
	<view class="content">
		<button @click="remove">删除key2</button>
		<button @click="clear" type="warn">清除所有缓存</button>
	</view>
</template>

<script setup>
	uni.setStorageSync('key1','hello moto')
	uni.setStorageSync('key2','王二麻子')
	uni.setStorageSync("arrs",["one","two","three"]);
	
	let myName = uni.getStorageSync("key1")
	console.log(myName);
	
	const res = uni.getStorageInfoSync();
	console.log(res);
	function remove(){
		uni.removeStorageSync("key2")
	}
	function clear(){
		uni.clearStorageSync()
	}
</script>

<style scoped>
	
</style>

效果:
在这里插入图片描述

网络

uni.request发起网路请求3种回调结果调用

发起网络请求。

<template>
	<view class="">
		
	</view>
</template>

<script setup>
	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
			success:res=>{
				console.log(res);
			}
		})
	}
	request();
</script>

<style lang="scss" scoped>
	       
</style>

请求成功:
在这里插入图片描述
把结果渲染到前端页面:

<template>
	<view class="layout">
		<view class="row" v-for="item in arrs" :key="item.id">
			<view class="title">{{item.title}}</view>
			<view class="content">{{item.body}}</view>
		</view>
	</view>
</template>

<script setup>
import { ref } from 'vue';
	let arrs = ref([])
	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
			success:res=>{
				console.log(res);
				arrs.value = res.data
			}
		})
	}
	request();
</script>

<style lang="scss" scoped>
	.layout{
		padding: 30rpx;
		.row{
			border-bottom: 1px solid #cfcfcf;
			padding: 20rpx 0;
			.title{
				font-size: 36rpx;
			}
			.content{
				font-size: 28rpx;
				color: #666;
			}
		}
	}    
</style>

效果:
在这里插入图片描述
写法2:

	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
		}).then(res=>{
			console.log(res);
		})
	}
	request();

写法3:

async function request(){
		let res = await uni.request({
			url:"https://jsonplaceholder.typicode.com/posts"
		})
		console.log(res);
	}
	request();

uni.request参数

data

请求的参数。

<template>
	<view class="">
		
	</view>
</template>

<script setup>
	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
			data:{
				id:5,
			},
		}).then(res=>{
			console.log(res);
		})
	}
	request();
	
</script>

<style lang="scss" scoped>
	       
</style>

method有效值

发送的类型,也就是请求方式。
在这里插入图片描述
演示代码:

<template>
	<view class="">
		
	</view>
</template>

<script setup>
	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
			data:{
				id:5,
			},
			method:"GET",
		}).then(res=>{
			console.log(res);
		})
	}
	request();
	
</script>

<style lang="scss" scoped>
	       
</style>

header

设置请求的 header,header 中不能设置 Referer。header也就是头部信息,是带给我们后端的。

<template>
	<view class="">
		
	</view>
</template>

<script setup>
	function request(){
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts?id=3",
			data:{
				id:5,
			},
			header:{
				token:"asfsaf"
				“content-type”:"application/json"
			},
			method:"GET",
		}).then(res=>{
			console.log(res);
		})
	}
	request();
	
</script>

<style lang="scss" scoped>
	       
</style>

timeout

超时时间,单位为ms。我们定义一个fail,如果超时了,就会返回fail,并提示“超时”,这里超时时间设置为1秒,再定义一个showLoading,然后设置complete,写入hideLoading,也就是说,无论成功失败,showLoading,都会隐藏,代码如下:

<template>
	<view class="">
		
	</view>
</template>

<script setup>
	
	function request(){
		uni.showLoading()
		uni.request({
			url:"https://jsonplaceholder.typicode.com/posts",
			data:{
				id:5
			},
			header:{
				token:"adfadsfadsf",
				"content-type":"application/x-www-form-urlencoded"
			},
			method:"post",
			timeout:1000,
			success:res=>{
				console.log(res);			 
			},
			fail:err=>{
				console.log("超时");
				console.log(err);
			},
			complete:()=>{
				uni.hideLoading()
			}
		})
		
	}
	
	request();
	
</script>

<style lang="scss" scoped>
	       
</style>


调慢网速,测试fail:
在这里插入图片描述
开始测试:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX(2)——URL

URL 什么是URL&#xff1f; 定义&#xff1a;统一资源定位符&#xff0c;缩写&#xff1a;URL&#xff0c;或称统一资源定位器、定位地址&#xff0c;URL地址,俗称网页地址&#xff0c;简称网址&#xff0c;是因特网上标准的资源的地址。 概念&#xff1a;URL就是统一资源定…

Linux下C++动态链接库的生成以及使用

目录 一.前言二.生成动态链接库三.使用动态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C动态链接库&#xff08;.so文件&#xff09;。 二.生成动态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&…

【C++】C++应用案例-检验幻方

“幻方”是数学上一个有趣的问题&#xff0c;它让一组不同的数字构成一个方阵&#xff0c;并且每行、每列、每个对角线的所有数之和相等。比如最简单的三阶幻方&#xff0c;就是把1~9的数字填到九宫格里&#xff0c;要求横看、竖看、斜着看和都是15。 口诀&#xff1a;二四为肩…

Pip换源实战指南:加速你的Python开发

1. Pip换源的重要性 在使用Python进行软件开发或数据分析时&#xff0c;pip 是Python的包管理工具&#xff0c;用于安装和管理第三方库。然而&#xff0c;由于网络环境的差异&#xff0c;特别是在某些国家&#xff0c;访问默认的PyPI&#xff08;Python Package Index&#xff…

debain12中安装mysql8

本文安装使用的官方deb&#xff0c;最新的官方安装包地址&#xff1a;https://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb 前期准备&#xff1a; 1.安装了debain12.6的虚拟机&#xff0c;我是用的virtualBox安装的12.6 Edu的镜像&#xff1b; 开始安装&#xff1a; …

微服务的入门

带着问题进行学习&#xff1a; 1. 对服务进行拆分后&#xff0c;物理上是隔离的&#xff0c;数据上也是隔离的&#xff0c;如何进行不同服务之间进行访问呢&#xff1f; 2.前端是怎么样向后端发送请求的&#xff1f; 通过http请求&#xff0c;通过url&#xff0c;请求的…

最新版Golang pprof使用(引入、抓取、分析,图文结合)

最新版Golang pprof使用 &#x1f525;具体实践: Go调试神器pprof使用教程Golang线上内存爆掉问题排查&#xff08;pprof&#xff09; Github地址:https://github.com/ziyifast/ziyifast-code_instruction/tree/main/go-demo/go-pprof 引入pprof:import _ “net/http/pprof” …

python 查询机器python、gpu、安装包等环境版本信息

checkenv.py """Check environment configurations and dependency versions."""import importlib import os import resource import subprocess import sys from collections import OrderedDict, defaultdictimport torch# 查询自己想要的包…

【开源】一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。

基于 LLM 大语言模型的知识库问答系统 基于大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;的知识库问答系统是一种利用先进的自然语言处理技术来理解用户查询并从知识库中检索出准确答案的系统。这里的LLM指的是能够处理和理解大量文本数据的人工智能…

【Go - 如何查看类型,运行前/运行时】

方式1 - 运行时查看 在Go中&#xff0c;你可以使用reflect.TypeOf()函数来获取变量的类型。这需要导入reflect包。以下是个示例&#xff0c;在运行时打印变量的类型&#xff1a; package mainimport ("context""fmt""reflect""go.mongodb…

精通推荐算法13:图神经网络之GraphSAGE

1 引言 近年来&#xff0c;图神经网络&#xff08;Graph Neural Networks&#xff0c;GNN&#xff09;在NLP、风控和推荐系统等领域的研究十分火热&#xff0c;其对推荐系统、生物医药、社交网络和知识图谱等非结构化数据有十分优秀的处理能力。基于图神经网络的Embedding表征…

用户登录安全是如何保证的?如何保证用户账号、密码安全?

1.HTTP协议直接传输密码&#xff08;无加密&#xff09; 前端 直接发送HTTP请求&#xff08;无加密&#xff09;&#xff0c;攻击者可直接捕获网络包&#xff0c;看到下面的明文信息 因此&#xff0c;使用HTTP协议传输会直接暴露用户敏感信息。 2.HTTPS协议直接传输密码&…

windows环境 python + opencv 加载 onnx 人脸检测模型识别人脸测试

参考博客&#xff1a; 1. OpenCV-Python 4.5.4 人脸识别应用&#xff1a;https://blog.csdn.net/qq_36563273/article/details/121510440( 代码就是在此博客代码基础上改的&#xff0c;主要添加了人脸画框的逻辑 ) 1. windows环境&#xff1a;win11 2. 安装 miniconda2-4.7.1…

用python解释进程与协程(python实例二十八)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.创建进程池&#xff0c;异步执行多个任务 3.1 代码构思 3.2 代码示例 3.3 运行结果 4. 模拟协程堵塞 4.1 代码构思 4.2 代码示例 4.3 运行结果 5.总结 1.认识Python Python 是一个高…

算法019:x的平方根

x的平方根. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/sqrtx/ 这个题乍一看很奇怪&#xff0c;但是换个角度&#xff0c;我们用二分查找的思想来完成这个题。 …

组队学习——决策树(以泰坦尼克号公共数据集为例)

本次我们挑战的数据集为泰坦尼克号公共数据集&#xff0c;为了降低难度&#xff0c;我们在原有数据集的基础上进行了优化&#xff0c;具体数据集介绍如下&#xff1a; 在这里也介绍一下数据的含义吧 数据介绍&#xff1a; Survived&#xff1a;是否存活&#xff08;label&#…

巧用外部资源加速任务执行

1. 背景 在人工智能时代&#xff0c;对算力的要求越来越高&#xff0c;为了加速任务的执行&#xff0c;可以削减软件层面的干扰以充分挖掘本机的硬件算力&#xff0c;具体可参考前面的文章。 若充分挖掘本机硬件能力之后还显不足&#xff0c;就需要增加硬件或提高硬件配置&am…

【小程序爬虫入门实战】使用Python爬取易题库

文章目录 1. 写在前面2. 抓包分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研…

pinia定义store及其简单的使用

定义store 在使用pinia管理状态之前,我们得知道 Store 是用 defineStore() 定义的&#xff0c;它的第一个参数要求是一个独一无二的名字&#xff1a; import { defineStore } from "pinia";// 你可以任意命名 defineStore() 的返回值&#xff0c;但最好使用 store 的…

C语言 #指针数组 #数组指针 #数组参数、指针参数

文章目录 前言 一、指针数组 1、概念&#xff1a; 2、指针数组有什么用呢&#xff1f; 二、数组指针 1、数组指针的定义 2、数组名与 &数组名 的区别 3、数组指针如何初始化&#xff1f; 4、数组指针的用法 三、根据代码区分 指针数组 和 数组指针 四、数组参数、指针参数 …