UniApp个人总结:新建页面大汇总

往期回顾

uniapp 踩坑记录 uni.$on为什么不能修改data里面的数据

uniApp页面通讯大汇总,如何页面之间传值

uniApp 页面通讯统一解决方案

uniapp sqlite 数据库操作封装
uniapp sqlLite 数据库操作封装 2:如何面向对象操作数据库
uniapp sqlite3 时间查询

uniapp sqlite数据库封装设计总结(完结篇)

正文

本篇目标

完成一个新建页面的框架

新页面
JavaScript代码
SCSS
Html页面
pages.json注册
sqlite数据库操作
页面通讯

环境安装

我们需要

如何新建模板页面

页面布局推荐

将一个页面分成vue,js,scss,更适合页面复杂逻辑的简化
在这里插入图片描述

新建模板文件

我们在新建页面的时候,右上角会显示模板文件

在这里插入图片描述
点击自定义模板文件的时候,会显示一个文件夹,
存入我们需要的模板文件即可
在这里插入图片描述

在这里插入图片描述

新建一个Test
在这里插入图片描述

在这里插入图片描述

因为我们将页面分组了,没有完全引入的时候会显示报错,找不到对应的文件

在这里插入图片描述
引入js和css文件,注意,这里的文件名默认是new_file。不会因为你的模板文件的名称而改变

在这里插入图片描述

TIPS:新建的页面可能会找不到,重新运行即可

这里给出我自己的默认文件

vue文件

<template>
	<view>
		
	</view>
</template>

<script src="./index.js">
	
</script>

<style src="./index.scss" lang="scss">

</style>

js文件

const pageName = 'pageName'//每个页面对应一个触发器的key
export default {
    
    
	data() {
    
    
		return {
    
    }
	},
	methods: {
    
    
		UniOn(res) {
    
    //路由响应
			console.log(res)
			var that = this
			var myFunction = {
    
    
				test() {
    
    //测试函数
					console.log('Hello World!')
				},
				SetValue(data) {
    
    //设置值
					that[data.key] = data.value
				},
			}
			myFunction[res.method](res.data)
		},
		ShowMsg(msg) {
    
    
			uni.showToast({
    
     title: msg, icon: 'none' })
			console.log(msg)
		}

	},
	mounted() {
    
    

	},
	onLoad() {
    
    
		var that = this
		uni.$on(pageName, res => {
    
    
			that.UniOn(res)
		})
		that.ShowMsg('Hello World!')
	},
	unLoad() {
    
    
		uni.$off(pageName)//移除触发器
	}
}

scss文件,为空


总结

还有就是,uniapp自己把交互反馈封装好了,这个我很推荐,因为很多时候我们都需要交互反馈,这么好又方便的东西。

在这里插入图片描述

uniapp交互反馈

如果需要数据库封装的,可以找我之前的文章

uniapp sqlite数据库封装设计总结(完结篇)

后续更新

2023年6月12日

我发现我之前设计的时候,代码拼写出现了点错误,而且将方法分为UniOn的方法和method的方法,有重复命名。而且不利于代码简洁

新js文件模板


const pageName = 'pageName'
export default {
    
    
	data() {
    
    
		return {
    
    }
	},
	methods: {
    
    
		SetValue(data) {
    
     //设置值
			this[data.key] = data.value
		},
		ShowMsg(msg) {
    
    //展示值
			uni.showToast({
    
     title: msg, icon: 'none' })
			console.log(msg)
		}

	},
	mounted() {
    
    

	},
	onLoad() {
    
    
		var that = this
		uni.$on(pageName, res => {
    
    
			try {
    
    
				that[res.method](res.data)
			} catch (e) {
    
    
				//TODO handle the exception
				console.log(e)
			}
		})
	},
	onUnload() {
    
    
		uni.$off(pageName)//移除触发器
	}
}

在新js模板中,我觉得页面通讯应该是面向方法的。就是页面通讯,应该是调用你这个页面的某个方法。具体的业务逻辑你自己处理。我只负责告诉你方法和参数

更新前

页面A 页面B 页面B的UniOn方法 页面通讯,传入方法名和参数 专门用于管理传入的参数 转化为对应的业务 页面A 页面B 页面B的UniOn方法

更新后

页面A 页面B 页面B的method方法 页面通讯,传入方法名和参数 直接指向method方法 自带一个SetValue方法用于设置 data里的参数 页面A 页面B 页面B的method方法

猜你喜欢

转载自blog.csdn.net/qq_44695769/article/details/131081650