uni-app--》打造个性化壁纸预览应用平台(四)完结篇

🏙️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名前端工程师

🌄个人主页:亦世凡华、

🌆系列专栏:uni-app

🌇座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽所有光芒。

👀引言

⚓经过web前端的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了uni-app专栏,对于想从移动端开发方向进一步发展的朋友,希望看到我文章的朋友能对你有所帮助。

        今天开始使用vue3+uni-app搭建一个电商购物的小程序,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多前端uni-app知识。

        如果是第一次接触uni-app并且想学习uni-app的朋友,我是不建议直接从此次实战项目开始看起,可以先阅读一下我以前的基础文章:什么是uniapp?如何开发uniapp? 按部就班的学习可以让学习变得更轻松更容易上手哦,闲话少说我们直接开始今天的uni-app实战篇。

目录

🏔️分享页面开发

🌋个人页面开发

🗻搜索页面开发

🏖️项目打包上线

🏕️项目上传仓库


🏔️分享页面开发

uni官网给我们提供了分享内容的API函数,如下所示:

这里我们导入该API函数之后可以简单的使用一下,如下所示我们可以自定义分享标题以及分享页的路径内容,如下所示:

import { onShareAppMessage } from "@dcloudio/uni-app"// 分享给好友
onShareAppMessage((e) => {return {title: "看我分享的图片!",path: "/pages/classify/classify"}
})

呈现的效果如下所示:

当然这里也有可以分享到朋友圈的API函数,如下所示:

import { onShareAppMessage, onShareTimeline } from "@dcloudio/uni-app"// 分享到朋友圈
onShareTimeline(() => {return {title: "朋友圈分享啦",imageUrl: "/static/logo.png"}
})

最终呈现的效果如下所示,当然我们没有做其他设置,默认跳转的朋友圈页面还是首页:

当然这里我们也可以把这个分享的函数写在分类页面,如下所示:

// 分享给好友
onShareAppMessage((e) => {return {title: "看我分享的图片" + pageName,path: "/pages/classlist/classlist?id=" + queryParams.classid + "&name=" + pageName}
})
// 分享到朋友圈
onShareTimeline(() => {return {title: "朋友圈分享啦" + pageName,query: "id=" + queryParams.classid + "&name=" + pageName}
})

呈现的效果如下所示,这里注意一下,如果想真正实现分享朋友圈功能,需要在小程序后台平台中进行认证并缴纳30元才可以实现,不然即使你写了分享的代码也是没用效果的,这里仅仅就演示一下而已:

当然在预览界面如果想分享的话,仅仅是需要分享一张图片而已,这里我们需要在分享函数中传递一个标识type属性表明当前是预览界面进行分享,如下所示:

然后这里我们通过判断传递的参数中是否有type属性来调用一个传递单张图片的接口函数,如下:

然后返回按钮处,正常我们都是navigateBack而已,当我们分享之后,分享页面肯定不能使用,所以我们在失败的时候直接reLaunch,然后跳转到首页接口,如下所示:

// 点击返回按钮
const goBack = () => {uni.navigateBack({success: () => {uni.navigateBack()},fail: (err) => {uni.reLaunch({url: "/pages/index/index"})}})
}

呈现的效果如下所示:

🌋个人页面开发

接下来对个人页面中的静态数据进行修改,开始接入接口的数据,如下我们直接调用接口函数,获取到的数据赋值响应式ref当中:

// 获取用户信息
const  getUserInfo = async () => {let res = await apiUserInfo()userInfo.value = res.dataselectData.value[0].text = res.data.downloadSizeselectData.value[1].text = res.data.scoreSizeselectData.value[2].text = res.data.downloadSizeselectData.value[3].text = res.data.downloadSizeselectData.value[4].text = res.data.downloadSize
}onLoad((e) => {getUserInfo()
})

然后我们根据是否有数据来渲染页面和加载loading页面,如下所示:

呈现的效果如下所示:

然后接下来我们开始给我的下载和我的评分进行页面的设置,这里也是用到了分类列表界面,不过这里我们需要对两个按钮传递不同的参数,对于个人页面的渲染,这里我把按钮的渲染设置成ref中的一个数组数据,通过遍历的方式拿到对应的数据,这里我们只需要对其url参数进行设置即可:

传递完参数之后,我们来带分类列表接口,在onLoad函数下传递的参数数据进行判断,如果我们传递参数存在的话就将其赋值到我们定义的对象当中:

赋值完成之后,我们来带获取分类列表接口的数据的函数当中进行判断,如果我们传递的参数中存在type的话说明我们想查看历史分类列表界面,如下所示:

// 获取分类列表数据
const getClassList = async () => {let resif (queryParams.classid) res = await apiGetClassList(queryParams)if (queryParams.type) res = await apiGetHistoryList(queryParams)classList.value = [...classList.value, ...res.data]if (queryParams.pageSize > res.data.length) noData.value = true // 最后的数据小于最初设置的大小uni.setStorageSync("storgClassList", classList.value)
}

最终呈现的效果如下所示:

🗻搜索页面开发

接下来开始对搜索页面进行开发,这里我们先新建一个搜索页面的组件,之前我们把搜索封装成了一个组件,这里我们来到该组件设置一下跳转链接,如下所示:

接下来来说对搜索组件search页面进行开发,这里我们用到了uni官网提供的一个输入框组件:

因为如果没用搜索历史记录的话,我们可以给其设置一个空状态,这里我们也使用一个插件,如下

然后接下来我们可以开始对搜索框设置点击事件,如下所示:

这里我们通过将搜索的结果缓存到本地方便后期查看,这里也设置了对应的函数,如下所示:

const historySearch = ref(uni.getStorageSync("historySearch") || []); //搜索历史词
const queryParams = ref({ //查询参数	 pageNum:1,pageSize:12,keyword:""
})//点击搜索
const onSearch = ()=>{historySearch.value = [...new Set([queryParams.value.keyword, ...historySearch.value])]uni.setStorageSync("historySearch", historySearch.value)
}
//点击清空搜索记录
const removeHistory = ()=>{uni.showModal({title:"是否清空历史搜索?",success:res=>{if(res.confirm){uni.removeStorageSync("historySearch")historySearch.value = []}}})
}
//点击标签进行搜索
const clickTab = (value)=>{queryParams.value.keyword = value
}

呈现的效果如下所示:

然后这里我们开始调用对应的接口函数当进行搜索的时候能够呈现对应的数据:

这里在对下拉触底和点击热门推荐的时候也能够加载对应的数据:

//点击标签进行搜索
const clickTab = (value)=>{initParams()queryParams.value.keyword = valuegetSearchData()
}
//点击清除按钮
const onClear = ()=>{initParams()
}
//触底加载更多
onReachBottom(()=>{if (noData.value) returnqueryParams.value.pageNum++getSearchData()
})

最终呈现的效果如下所示:

🏖️项目打包上线

截止到现在,项目基本上也已经完成的差不多了,还有一些细节方面没有讲解,大家可自行下载源码进行查看,这里不再赘述,接下来将简单介绍一下项目的打包上线的一些流程,如下所示:

微信打包:这里我们可以借助工具进行项目的打包,如下所示:

然后输入项目的名称以及自己账户的appid,如下所示:

点击发行之后会重新打开一个微信开发者工具的界面,然后我们可以点击上传,输入版本号和相关描述之后点击上传即可,如下所示:

然后我们可以在小程序的后台里面的项目开发设置里面找到我们的开发版本,然后提交审核就可以

当然如果想打包其他平台的话,也可以参考我之前的文章:地址

🏕️项目上传仓库

创建远程仓库:进入github网址,登录自己的账号后点击右上角头像新建仓库,如下:

创建完成后,会跳转到如下界面,上面代码详细的告诉你如何将代码提交到远程库:  

提交代码需要借用 git 工具,如何下载这里不再赘述,自行百度。如果想详细的了解git的使用,可以参考一下我之前的专栏:git专栏 ,详细操作如下:  

生成本地仓库:具体步骤如下:

git init 生成工作区

git status 查看提交的文件情况

git add . 提交到暂存区

git commit -m "提交信息" 提交到版本区

推送到远程仓库:具体步骤如下:

git remote add origin git@github.com:ztK63LrD/wallpaper-platform.git  关联别名

git push -u origin master 推送分支

推送完成之后,刷新github页面就会将我们推送的代码呈现在页面上,如下:

至此项目的大概内容已经完成了,项目的github源代码地址为:项目地址 。如果觉得不错的话可以给个一键三联或者项目源地址给个star哦,您的支持就是博主创作的最大动力。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文写作神器!分享5款AI论文写作常用软件推荐

在当今学术研究和写作领域,AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款目前最好用的AI论文写作软件推荐: 1. 千笔-AIPassPaper 千笔-…

SpringCache之本地缓存

针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。 CacheManger 描述 SimpleCacheManager 使用简单的Collection来存储缓存,主要用于测试 ConcurrentMapCacheManager 使用ConcurrentMap作为缓存技术&…

mac 安装redis

官网下载指定版本的redis https://redis.io/ 目前3.2.0 是最新最稳定的 版本 这里是历史版本下载 下载指定版本 安装 1.放到自定义目录下并解压 2.打开终端,执行命令 cd redis的安装目录下 make test -- 此命令的作用是将redis源代码编译成可执行文件&#xff0c…

java基础概念21-权限修饰符、代码块

一、权限修饰符 1-1、作用 权限修饰符,是用来控制一个成员能够被访问的范围的。 可以修饰:成员变量,方法,构造方法,内部类。 1-2、权限修饰符的分类 二、代码块 局部代码块构造代码块静态代码块 2-1、局部代码块 …

day1 QT

作业 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口大小this->resize(1025,533);//固定窗口大小this->setFixedSize(1025,533);//设置窗口背景色,设置弧度//this->setStyleSheet("background-image:url(E:/…

肖扬老师好书《微权力下的项目管理(第3版)》读书笔记1

肖扬老师好书《微权力下的项目管理(第3版)》,的确不错,分别共读之。 第2章 精华 为了在项目过程中成为一名优秀的导演,项目经理要同时修炼领导和管理这两种不同的能 力,因为项目管理模式就是一种游走于领导…

计算机网络知识点复习——TCP协议的三次握手与四次挥手(连接与释放)

TCP协议的三次握手与四次挥手(连接与释放) 一、前言二、简单的知识准备1. TCP协议的主要特点2. TCP报文段 三、TCP连接的建立(三次握手)四、TCP连接的释放(四次挥手)五、TCP连接与释放的总结六、结束语 一、…

MySQL record 01 part

更改密码: alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MyS…

vue2-elementUI-初始化启动项目-git

前置基础 资料下载-阿里云盘 vueaxioselement-uinpmvscode 初始化项目 1.创建vue2工程 1.1 vue create projectName1.2 选择 1.3 初始化 vue-cli 的核心步骤: Manually select features (*) Babel ( ) TypeScript ( ) Progressive Web App (PWA) Support …

【深度学习讲解笔记】前言

小编为AI专业的本科学生,最近入手了一本《深度学习讲解》的书,由于封面画了苹果🍎,所以也叫苹果书,这本书目前在全网的热度很高。 本书是根据李宏毅老师讲授的《机器学习》课程编写的,作者是来自DataWhale…

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击&#xf…

Uniapp基于uni拦截器+Promise的请求函数封装

最近在学Uniapp,到封装请求的时候本来还想用axios,但是看到一些教学视频有更简单的方法, 基于uni的拦截器和Promise封装的请求函数 但是他们是用TS写的,还没学到TS,我就把JS写了,最终也是请求成功 // src/…

电动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

电动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型。5G智能工厂与物联数字孪生平台的融合应用,为电动机制造业的数字化转型铺设了一条高速通道。这一创新模式不仅极大地提升了生产效率,还深刻改变了产品的设计、生产、管理及运…

EasyExcel模板导出与公式计算(下)

目录 环境要求 功能预览 需求分析 导入依赖 制作模板 编写代码 格式优化 最终效果 总结 在上一篇 EasyExcel模板导出与公式计算(上)-CSDN博客 文章中我们知道了在若依中使用自带的Excel注解来实现表格数据的导出,并且通过重写相关接…

【Python 千题 —— 算法篇】无重复字符最长子段

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在编程过程中,处理字符串的任务时常遇到,其中一个经典问题是查找无重复字符的最长子串。这在很多应用场景中…

redisson中的分布式锁

我的博客大纲 我的后端学习大纲 a.redisson概述: 1.Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)2.redisson介绍官方文档地址:3.Redisson它不仅提供了一系列的分布式的Java常用对象,还…

使用vscode编辑matlab完美解决方法

vscode里面的matlab插件都不好用,需要搭配互补一下 1先安装MATLAB 这个插件可以进行代码高亮、格式化、跳转,F5运行所有代码,或者选中要运行的代码,右键单独运行, 优点:运行速度很快,和matlab里…

vcruntime140.dll丢失报错处理及dll下载修复方法

概述 vcruntime140.dll是Visual C Redistributable for Visual Studio的一个动态链接库文件。 如果你在运行某个程序时遇到了vcruntime140.dll丢失的错误,你可以尝试以下解决方法: 重新安装程序: 如果你只在运行某个特定程序时出现了该错误…

云手机怎样简化海外社媒平台运营

随着越来越多的卖家希望拓展海外市场,运营TikTok、Facebook等社交媒体平台已经成为吸引流量和促进销售的重要手段。然而,在管理海外社媒账号的过程中,许多人会面临网络连接的问题。这时,使用一款高效便捷的云手机工具就显得尤为便…

心理辅导新篇章:Spring Boot学生评估系统

1 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的…