uni-app学习笔记(二)

news2024/11/24 6:37:54

目录

一、路由与页面跳转

1、tabar与普通页面跳转例子

2、navigateTo

3、switchTab

二、vue组件

1、传统vue组件的使用

2、easycom

三、uView组件库

1、安装配置

2、引入配置

3、使用

四、Vuex

1、认识

2、state基本使用

3、mapState使用

五、网络请求

1、封装请求

2、细化每个接口的配置

3、实例调用

六、媒体上传图片

1、uni.chooseImage(OBJECT)

2、代码实例


一、路由与页面跳转

1、tabar与普通页面跳转例子

pages.json配置页面

{
	"pages": [{
			"path": "pages/about/about",
			"style": {
				"navigationBarTitleText": "关于",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页"
			}
		}, {
			"path": "pages/prompt/prompt",
			"style": {
				"navigationBarTitleText": "提示框",
				"enablePullDownRefresh": false
			}
		}, {
			"path": "pages/swiper/swiper",
			"style": {
				"navigationBarTitleText": "滑块",
				"enablePullDownRefresh": false
			}
		}, {
			"path": "pages/form/form",
			"style": {
				"navigationBarTitleText": "表单",
				"enablePullDownRefresh": false
			}
		}, {
			"path": "pages/router/router",
			"style": {
				"navigationBarTitleText": "路由",
				"enablePullDownRefresh": false
			}

		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "全局",
		"navigationBarBackgroundColor": "#000000",
		"backgroundColor": "#ffffff"
	},
	"tabBar": {
		"color": "#7A7E83",
		"selectedColor": "#1296db",
		"borderStyle": "black",
		"backgroundColor": "#000000",
		"list": [{
			"pagePath": "pages/index/index",
			"iconPath": "/static/首页2.png",
			"selectedIconPath": "/static/首页.png",
			"text": "首页"
		}, {
			"pagePath": "pages/about/about",
			"iconPath": "/static/关于2.png",
			"selectedIconPath": "/static/关于.png",
			"text": "关于"
		}, {
			"pagePath": "pages/form/form",
			"iconPath": "/static/表单 (1).png",
			"selectedIconPath": "/static/表单.png",
			"text": "表单"
		}, {
			"pagePath": "pages/router/router",
			"iconPath": "/static/路由器组2.png",
			"selectedIconPath": "/static/路由.png",
			"text": "路由"
		}]
	},
	"uniIdRouter": {}
}

router.vue文件,模拟页面跳转

<template>
	<view>
		<button @click="toIndex">tabar跳转</button>
		<button @click="toSwiper">普通页面跳转</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		methods: {
			toIndex(){
				uni.switchTab({
					url:"/pages/index/index"
				})
			},
			toSwiper(){
				uni.navigateTo({
					url:"/pages/swiper/swiper"
				})
			}
		}
	}
</script>

2、navigateTo

(1)跳转非tabBar页面的url路径,路径可以带参数

格式:path?key=value&key2=value2

path:要跳转页面的路径

toSwiper(){
	uni.navigateTo({
		url:"/pages/swiper/swiper?name=sxx"
	})
}

(2)获取参数

在跳转到的页面的onLoad函数获取

onLoad(option) {
	console.log(option);
},

3、switchTab

(1)跳转tabBar页面的url路径(需在 pages.json 的 tabBar 字段定义的页面),路径不能带参数

(2)需要的参数可以写到全局变量去获取


二、vue组件

1、传统vue组件的使用

(1)创建components文件夹=》创建.vue组件文件

(2)在需要的页面引入、注册

index.vue

<template>
	<view class="content">
		<header-cpn></header-cpn>
		<image class="logo" src="/static/logo.png"></image>
		<view class="text-area">
			<text class="title">{{title}}</text>
		</view>
	</view>
</template>

<script>
	// 注意路径components前没有/
	// 命名至少两个词组成,以小驼峰的形式
	import headerCpn from 'components/header.vue'
	export default {
		components:{
			headerCpn
		},
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {
			console.log(getApp().globalData);
		},
		methods: {

		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

2、easycom

(1)说明

传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件

easycom将其精简为一步

(2)使用

只要组件安装在项目的 components 目录下,并符合components/组件名称/组件名称.vue

通过插件库引入到components文件下然后直接引入即可

DCloud 插件市场DCloud 插件市场icon-default.png?t=N7T8https://ext.dcloud.net.cn/可以看文件的命名和文档来决定引入标签的名字


三、uView组件库

1、安装配置

(1)打开工程终端

npm install uview-ui@1.8.8

如果根目录又没有package.json文件,先执行以下命令

npm init -y

(2)uView依赖SCSS,必须要安装此插件,否则无法正常运行

查看是否安装scss插件:点击工具=》插件安装

①前往插件市场安装

②终端命令安装

// 安装node-sass
npm i node-sass -D

// 安装sass-loader
npm i sass-loader -D

2、引入配置

(1)主JS库:在项目根目录中的main.js中,引入并使用uView的JS库

// main.js
import uView from "uview-ui";
Vue.use(uView);

注意要放在import Vue之后

(2)全局SCSS:引入uView主题文件

/* uni.scss */
@import 'uview-ui/theme.scss';

(3)引入基础样式

App.vue首行的位置引入,注意给style标签加入lang="scss"属性

<style lang="scss">
	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
	@import "uview-ui/index.scss";
</style>

(4) 配置easycom组件模式

在项目根目录的pages.json中,配置easycom

注意:

①只有一个easycom字段

②配置完要重启HX或重新编译项目

// pages.json
{
	"easycom": {
		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
	},
	
	// 此为本身已有的内容
	"pages": [
		// ......
	]
}

3、使用

(1)按钮

<template>
	<view>
		头部组件
		<u-button type="primary">主要按钮</u-button>
		<u-button type="success">成功按钮</u-button>
		<u-button type="info">信息按钮</u-button>
		<u-button type="warning">警告按钮</u-button>
		<u-button type="error">危险按钮</u-button>
	</view>
</template>


四、Vuex

1、认识

uni-app 内置了Vuex

(1)使用场景

  • 当一个组件需要多次派发事件时。例如购物车数量加减。
  • 跨组件共享数据、跨页面共享数据。例如订单状态更新。
  • 需要持久化的数据。例如登录后用户的信息。
  • 当您需要开发中大型应用,适合复杂的多模块多页面的数据交互,考虑如何更好地在组件外部管理状态时

(2)规则

  • 应用层级的状态应该集中到单个 store 对象中。

  • 提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。

  • 异步逻辑都应该封装到 action 里面

2、state基本使用

(1)在项目根目录下,新建 store 目录=》新建 index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);//vue的插件机制

//Vuex.Store 构造器选项
const store = new Vuex.Store({
	state:{
        msg:'存放的信息'
    },
	mutations:{},
	actions:{},
	getters:{}
})
export default store

(2)在 main.js 中导入文件

import store from './store'
const app = new Vue({
	store,
  ...App
})

(3)获取数据

<template>
	<view>
		<button @click="toIndex">tabar跳转</button>
		<button @click="toSwiper">普通页面跳转</button>
		<text>{{$store.state.msg}}</text>
	</view>
</template>

3、mapState使用

(1)当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。 为了解决这个问题,可以使用 mapState 辅助函数 帮助我们生成计算属性

<template>
	<view>
		<text>{{$store.state.msg}}</text>
		<text>{{userName}}</text>
	</view>
</template>

<script>
	import { mapState } from 'vuex'//引入mapState
	export default {
		computed: mapState({
			// 从state中拿到数据 箭头函数可使代码更简练
			userName: state => state.userName,
		})
	}
</script>

(2)当映射的计算属性名称与 state 的子节点名称相同时,可以给 mapState 传一个字符串数组

<template>
	<view>
		<text>{{$store.state.msg}}</text>
		<text>{{userName}}</text>
		<view>
			{{msg}}{{userName}}
		</view>
	</view>
</template>

<script>
	import { mapState } from 'vuex'//引入mapState
	export default {
		computed: mapState(['msg','userName'])
	}
</script>


五、网络请求

这里小编用天行API为实例

天行数据TianAPI - 开发者API数据平台

1、封装请求

创建utils文件夹=》创建request.js文件

const instance = (url,data,header,callback) => {
	const BASE_URL = "https://apis.tianapi.com"
	uni.request({
		url: BASE_URL + url,
		data,
		header,
		success: callback
	});
}
export default instance;

2、细化每个接口的配置

import instance from "../utils/request.js"

// 获取用户信息(GET)
export function getTianGou(data,callback){
	return instance(
		'/tiangou/index',
		data,
		{},
		callback
	)
}

3、实例调用

<script>
	import {
		getTianGou
	} from "../../api/user.js"
	import instance from "../../utils/request.js"
	export default {
		onLoad() {
            // 跳过第2步,直接调用
			instance("/tiangou/index", {
					key: ''//data传参
				}, {}, (res) => {
					console.log(res);
				}),
            // 细化接口配置后的调用
			getTianGou({
					key: ''//data传参
				}, (res) => {
					console.log(res);
				})
		},
	}
</script>


六、媒体上传图片

1、uni.chooseImage(OBJECT)

参数介绍:

①count:最多可以选择的图片张数,默认9

②sizeType:original 原图,compressed 压缩图,默认二者都有

uni.chooseImage({
	count: 6, //默认9
	sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
	sourceType: ['album'], //从相册选择
	success: function (res) {
		console.log(JSON.stringify(res.tempFilePaths));
	}
});

2、代码实例

<template>
	<view>
		<!-- 媒体图片 -->
		<button type="default" @click="upImage">上传图片</button>
		{{imgArr}}
		<image v-for="item in imgArr" :key="item" :src="item" mode=""></image>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				imgArr:[]
			}
		},
		methods: {
			// 上传图片事件
			upImage(){
				uni.chooseImage({
					count:6,
					success:res=> {
						console.log(res.tempFilePaths);
						console.log(this.imgArr);
						this.imgArr = res.tempFilePaths
					}
				})
			}
		}
	}
</script>

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

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

相关文章

MGEF 记录添加(物料主数据有一个存储区域的选项英文显示Haz. material number(危险物料号))

物料主数据有一个存储区域的选项英文显示Haz. material number&#xff08;危险物料号&#xff09;&#xff09; 看了一下对应的时MGEF-STOFF 刚开始在后台配置里面加好了需要的项目发现物料主数据还是选不到 找了半天&#xff0c;查了一堆资料。没有找到MGEF 是在哪里增加配置…

计算机毕业设计 基于Web的视频及游戏管理平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Vscode Vim自动切换

在VsCode里安装了Vim插件&#xff0c;由于Vim插件存在Normal和Insert两种模式&#xff0c;会需要经常性的按shift切换中英文&#xff0c;太过麻烦&#xff0c;本文介绍一下如何通过im-select来解决。 首先先确保自己的电脑里装有英文语言包&#xff0c;win10系统下可以使用Win…

树莓派连接打印机我都作了什么工作~

目录 前言1 安装系统2 修改一些设置3 安装更新了一些东西4 编辑DHCP配置文件5 CUPS网页设置6 最后后记参考链接 前言 为了给树莓派连接打印机&#xff0c;并将打印机共享到局域网中&#xff0c;参考了很多博文&#xff0c;也安照教程做了很多操作设置&#xff0c;但是由于参考的…

认证服务-SpringSecurity及Oauth2介绍

认证服务-SpringSecurity及Oauth2介绍 统一身份认证服务 统一身份认证服务系统&#xff1a;以统一身份认证服务为核心&#xff0c;用户登录统一身份认证服务后&#xff0c;即可以使用所有支持统一身份认证服务的管理应用系统。 统一认证服务的提供方在项目实施中通常由公司平…

Unity地面交互效果——5、角色足迹的制作

大家好&#xff0c;我是阿赵。   之前几篇文章&#xff0c;已经介绍了地面交互的轨迹做法。包括了法线、曲面细分还有顶点偏移。Shader方面的内容已经说完了&#xff0c;不过之前都是用一个球来模拟轨迹&#xff0c;这次来介绍一下&#xff0c;怎样和角色动作结合&#xff0c…

基于ssm的大学生社团管理系统

基于ssm的大学生社团管理系统 摘要 基于SSM的大学生社团管理系统是一个全面、高效的社团管理平台&#xff0c;旨在帮助大学生和社团管理员更方便、更快捷地进行社团活动的组织和管理。该系统基于Spring、SpringMVC和MyBatis&#xff08;简称SSM&#xff09;开发&#xff0c;这三…

IS-LM模型:从失衡到均衡的模拟

IS-LM模型&#xff1a;从失衡到均衡的模拟 文章目录 IS-LM模型&#xff1a;从失衡到均衡的模拟[toc] 1 I S − L M 1 IS-LM 1IS−LM模型2 数值模拟2.1 长期均衡解2.2 政府部门引入2.3 价格水平影响2.4 随机扰动因素 1 I S − L M 1 IS-LM 1IS−LM模型 I S − L M IS-LM IS−LM是…

JVM GC 垃圾收集器

文章目录 System.gc()内存溢出&#xff08;OOM&#xff09;OOM 的原因 内存泄漏垃圾回收的并行与并发安全点与安全区域 Java 中的引用分类强引用&#xff08;Strong Reference&#xff09;软引用&#xff08;Soft Reference&#xff09;弱引用&#xff08;Weak Reference&#…

设计模式是测试模式咩?

设计模式和测试模式概述 软件的生命周期为什么要进行测试&#xff08;测试的目的&#xff09;&#xff1f;软件的设计模式1. **瀑布模型**3. 增量和迭代模型4. 敏捷模型5. 喷泉模型 测试模型V模型W模型 一个应用程序从出生到“死亡”会经过非常漫长的流程…… 软件的生命周期 …

你觉得哪个软件写verilog体验最好?

最近在媒体上看到一个热点问题&#xff0c;浏览量高达680,003。“你觉得哪个软件写verilog体验最好&#xff1f;”这个问题可以说是IC设计师们最想知道的问题&#xff0c;也是大家工作交流中比较常见的。今天移知教育小编就来为大家分享一下&#xff0c;我对于这个问题的解答。…

第4版信息系统模考真题

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.下列关于信息的说法&#xff0c;错误的是( )。 A信息是物质、能量及其属性的标示的集合是确定性的增加 B信息是以物质介质为载体&#xff0c;传递和反映世界…

浙大计算机学院2024届推免直博生名单

名单&#xff1a; 分析&#xff1a; 浙大计算机学院共录取推免直博生158人&#xff0c;其中计算机科学与技术专业73人&#xff0c;人工智能专业7人&#xff0c;软件工程专业21人&#xff0c;网络空间安全专业19人&#xff0c;电子信息专业31人&#xff0c;设计专业7人 欢迎关…

nginx如何编译安装和应用

nginx是什么 Nginx&#xff0c;简称为"engine x"&#xff0c;是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也Nginx&#xff0c;简称为"engine x"&#xff0c;是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务…

Flink SQL -- 概述

1、Flink SQL中的动态表和连续查询 1、动态表&#xff1a; 因为Flink是可以做实时的&#xff0c;数据是在不断的变化的&#xff0c;所以动态表指的是Flink中一张实时变换的表&#xff0c;表中会不断的有新的数据。但是这张表并不是真正的物理表。 2、连续查询&#xff1a; 连续…

视频编软件会声会影2024中文版功能介绍

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…

虚拟机复制后,无法ping通问题解决

虚拟机复制后&#xff0c;无法ping通问题解决 可能出现的现象 ssh工具连接不上虚拟机&#xff1b;虚拟机ping不通外网或者ping不通内网其它虚拟机&#xff1b; 原因 原虚拟机和新复制出来的虚拟机的ip地址重复&#xff1b;原虚拟机和新复制出来的虚拟机的MAC地址重复&#…

官方Redis视图化工具Redisinsight

一、下载最新版本的 docker pull redislabs/redisinsight mkdir /data/redisinsight docker run -d -u root -p 8001:8001 -v /etc/localtime:/etc/localtime -v /data/redisinsight:/db --restartunless-stopped redislabs/redisinsight:latest 二、浏览器打开 http://192…

轻量封装WebGPU渲染系统示例<22>- 渲染到纹理(RTT)(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/RTTTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class RTTTest {private mRscene new RendererScene()…