uni-App 开发记录


uni-App

开发准备工作 :

官方文档:
https://uniapp.dcloud.io/collocation/pages

开发工具
下载 HBuilder X 编辑器(官方推荐)


一、创建uni-App

新建 项目
在这里插入图片描述
选择创建项目 进入项目配置
在这里插入图片描述
这里根据自身需求选择即可

二、使用步骤

1.项目结构

在这里插入图片描述

2.文档结构

单个文件结构

<template>
		// html文件部分
		<view></view>
</template>

<script>
	// 引入组件
	import Card from "../../components/list-card/list-card.vue"
	export default {
		data() {
			return {
				// data数据存放地
			}
		},
		components: {
			// 引入的组件
			Card
		},
		onLoad() {
			// 小程序的生命周期函数 除此以外还有onshow onready等  
		},
		computed: {
			// vue的计算属性
		},
		methods: {
			// 所有方法都在这里
		},
		watch: {
			// vue的监听 等 大部分都可以实现
		},
	}
</script>
// 样式 可选scss less 
<style lang="scss" scoped></style>

2.组件

在这里插入图片描述

结构代码:

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

<script>
export default {
	// 接收父组件的传值
	props: {
		tabList: {
			type: Array,
			default: []
		},
		tabActiveIdx: {
			type: Number,
			default: 0
		}
	},
	// 组件自己的数据
	data() {
		return {
		};
	},
	// 组件级的生命周期
	onLoad() {
	},
	// 组件级的方法
	methods: {
	}
};
</script>

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

插件市场链接
https://ext.dcloud.net.cn/

三、常见问题

  1. 从uniapp使用的开发软件,到创建,到运行,如何打包不同平台的代码,如何打包apk,云打包,如何运行在不同的端
    在这里插入图片描述

选中项目 点击发行 选择 需要做出的打包 配置即可
在这里插入图片描述
打包成功!
在这里插入图片描述
选中项目 点击运行 需要配置相应的文件路径

  1. uniapp怎么进行路由跳转

(1)保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面 (如果A->B来回频繁切换,不要A
B两个方法都使用这个方法。) //在起始页面跳转到test.vue页面并传递参数 uni.navigateTo({
url: ‘test?id=1&name=uniapp’ }); 页面跳转路径有层级限制,不能无限制跳转新页面 跳转到 tabBar 页面只能使用 switchTab 跳转

(2)关闭当前页面,跳转到应用内的某个页面 需要跳转的应用内非 tabBar 的页面的路径,
路径后可以带参数。参数与路径之间使用?分隔, 参数键与参数值用=相连,不同参数用&分隔;如
‘path?key=value&key2=value2’ uni.redirectTo({
url: ‘test?key=value&key2=value2’ });

(3) uni.reLaunch(OBJECT) 关闭所有页面,打开到应用内的某个页面。

H5端调用uni.reLaunch之后之前页面栈会销毁, 但是无法清空浏览器之前的历史记录,此时navigateBack不能返回,
如果存在历史记录的话点击浏览器的返回按钮或者调用history.back()仍然可以导航到浏览器的其他历史记录。 跳转到 tabBar
页面,并关闭其他所有非 tabBar 页面。

(4)uni.switchTab(OBJECT) 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

(5)uni.navigateBack(OBJECT) 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()
获取当前的页面栈,决定需要返回几层。

navigateTo, redirectTo 只能打开非 tabBar 页面。 switchTab 只能打开 tabBar 页面。
reLaunch 可以打开任意页面。 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
不能在 App.vue 里面进行页面跳转。
H5端页面刷新之后页面栈会消失,此时navigateBack不能返回,如果一定要返回可以使用history.back()导航到浏览器的其他历史记录。

  1. 怎么配置tabbar

例子:

// tabBar 配置
	"tabBar": {
		// 未选中字体颜色
	    "color": "#7A7E83",
	    // 选中字体颜色
	    "selectedColor": "red",
	    // 至少两个
	    "list": [{
	        // 点击跳转的路径
	        "pagePath": "pages/index/index",
	        // 未选中图片路径
	        "iconPath": "static/1.png",
	        // 选中的图片路径
	        "selectedIconPath": "static/11.png",
	        // 文本内容
	        "text": "首页"
	    }, {
	        "pagePath": "pages/class/class",
	        "iconPath": "static/2.png",
	        "selectedIconPath": "static/22.png",
	        "text": "分类"
	    }]
	},
  1. 如何请求接口

使用uni提供的request

uni.request({
    
    
			url: url,
			data: data,
			method: "GET",
			header,
			success(res) {
    
    
				resolve(res)
			},
			fail(res) {
    
    
				reject(res)
			})
		},
  1. 生命周期都有哪些
  export default {
    
    
        	data() {
    
    
             	return {
    
    
                 title: 'Hello'
             }
         },
         	onLoad() {
    
    
             	console.log('页面加载')
         },
         	onShow() {
    
    
             	console.log('页面显示')
         },
         	onReady(){
    
    
             	console.log('页面初次显示')
         },
         	onHide() {
    
    
             	console.log('页面隐藏')
         },
         	onUnload() {
    
    
             	console.log('页面卸载')
         },
         	onBackPress(){
    
    
             	console.log('页面返回...')
         },
         	onShareAppMessage() {
    
    
             	console.log('点击分享')
         },
         	onReachBottom() {
    
    
             	console.log('下拉加载...')
         },
         	onPageScroll(){
    
    
             	console.log('页面滚动...')
         },
         	onPullDownRefresh() {
    
    
             	console.log('上拉刷新...')
             // uni.stopPullDownRefresh(); //停止下拉
         },
         	methods: {
    
    
            
         }
}
  1. uniapp中 nvue是什么?描述一下他的特点
> nvue开发与vue开发的常见区别 基于原生引擎的渲染,虽然还是前端技术栈,但和web开发肯定是有区别的。
> 
> nvue 页面控制显隐只可以使用v-if不可以使用v-show nvue
> 页面只能使用flex布局,不支持其他布局方式。页面开发前,首先想清楚这个页面的纵向内容有什么,哪些是要滚动的,然后每个纵向内容的横轴排布有什么,按
> flex 布局设计好界面。 nvue 页面的布局排列方向默认为竖排(column),如需改变布局方向,可以在 manifest.json
> app-plus -> nvue -> flex-direction 节点下修改,仅在 uni-app 模式下生效。详情。 nvue页面编译为H5、小程序时,会做一件css默认值对齐的工作。因为weex渲染引擎只支持flex,并且默认flex方向是垂直。而H5和小程序端,使用web渲染,默认不是flex,并且设置display:flex后,它的flex方向默认是水平而不是垂直的。所以nvue编译为H5、小程序时,会自动把页面默认布局设为flex、方向为垂直。当然开发者手动设置后会覆盖默认设置。
> 文字内容,必须、只能在<text>组件下。不能在<div><view>的text区域里直接写文字。否则即使渲染了,也无法绑定js里的变量。
> 只有text标签可以设置字体大小,字体颜色。 布局不能使用百分比、没有媒体查询。 nvue 切换横竖屏时可能导致样式出现问题,建议有
> nvue 的页面锁定手机方向。 支持的css有限,不过并不影响布局出你需要的界面,flex还是非常强大的。详见
> 不支持背景图。但可以使用image组件和层级来实现类似web中的背景效果。因为原生开发本身也没有web这种背景图概念
> css选择器支持的比较少,只能使用 class 选择器。详见 nvue
> 的各组件在安卓端默认是透明的,如果不设置background-color,可能会导致出现重影的问题。 class 进行绑定时只支持数组语法。
> Android端在一个页面内使用大量圆角边框会造成性能问题,尤其是多个角的样式还不一样的话更耗费性能。应避免这类使用。
> nvue页面没有bounce回弹效果,只有几个列表组件有bounce效果,包括 list、recycle-list、waterfall。
> 原生开发没有页面滚动的概念,页面内容高过屏幕高度并不会自动滚动,只有部分组件可滚动(list、waterfall、scroll-view/scroller),要滚得内容需要套在可滚动组件下。这不符合前端开发的习惯,所以在
> nvue 编译为 uni-app模式时,给页面外层自动套了一个
> scroller,页面内容过高会自动滚动。(组件不会套,页面有recycle-list时也不会套)。后续会提供配置,可以设置不自动套。 在
> App.vue 中定义的全局js变量不会在 nvue 页面生效。globalData和vuex是生效的。 App.vue
> 中定义的全局css,对nvue和vue页面同时生效。如果全局css中有些css在nvue下不支持,编译时控制台会报警,建议把这些不支持的css包裹在条件编译里,APP-PLUS-NVUE
> 不能在 style 中引入字体文件,nvue 中字体图标的使用参考:加载自定义字体。如果是本地字体,可以用plus.io的API转换路径。
> 目前不支持在 nvue 页面使用 typescript/ts。 nvue
> 页面关闭原生导航栏时,想要模拟状态栏,可以参考文章。但是,仍然强烈建议在nvue页面使用原生导航栏。nvue的渲染速度再快,也没有原生导航栏快。原生排版引擎解析json绘制原生导航栏耗时很少,而解析nvue的js绘制整个页面的耗时要大的多,尤其在新页面进入动画期间,对于复杂页面,没有原生导航栏会在动画期间产生整个屏幕的白屏或闪屏。

详见 https://uniapp.dcloud.io/use-weex

  1. 如何进行存储数据,获取数据

本地存储 全局变量 vuex都可以

  1. css像素单位使用什么最合适

upx,rpx,vw,vh 等

  1. 都有哪些项目上出现的问题,以及如何解决的

授权登录
配置:(微信小程序)
在这里插入图片描述
在这里插入图片描述
获取wx的code

uni.login({
    
    
		provider:"weixin",
		success:(res)=>{
    
    
		console.log("code:",res.code);
	},
})

总结

uni app 可以看作使用了veu语法的小程序 基本写法大致于小程序相同 但 我们使用的api等 wx.需要更换为 uni. 如若需要实际开发,尽量还是多参考官方文档

猜你喜欢

转载自blog.csdn.net/t5_5_5_5_5_7_7/article/details/110635933