uni-app--》如何制作一个APP并使用?

这篇具有很好参考价值的文章主要介绍了uni-app--》如何制作一个APP并使用?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生

🛵个人主页:亦世凡华、

🛺系列专栏:uni-app

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

👀引言

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

目录

项目搭建

配置tabBar路由

设置基础内容

导航栏点击样式设置

新闻详情页布局

新闻列表数据的详细展示

实现上拉触底效果

获取参数并跳转到详情页

项目的打包上线

项目开源Github


项目搭建

今天实现一个简单的新闻列表的小案例,并制作成一个APP在手机上下载使用,项目很简单,仅仅就只需要有两个路由来实现:index和user。如果第一次接触uni-app的话,欢迎订阅一下本专栏,学习里面的文章,项目的实现原理基本可以搞懂,废话不多说,直接上手操作。

配置tabBar路由

因为仅有两个路由,所有在pages页面新建页面时,会自动生成配置路径,只要自己设置导航栏的标题即可,如下:

uni-app--》如何制作一个APP并使用?

接下来需要对导航栏的标题颜色进行设置,这里我就设置在全局样式里面了,如果你对某一个页面需要指定特别的样式,可以在当前页面的路径的pages里单独设置颜色来覆盖全局样式,这里不再赘述,如下:

uni-app--》如何制作一个APP并使用?

设置好导航栏的样式之后,便可以着手配置tabBar的相关样式设置了,这里的话可以设置一个点击的图表,图表可以自己在阿里云的字体图标库进行寻找,地址:iconfont-阿里巴巴矢量图标库 :

uni-app--》如何制作一个APP并使用?

选择自己喜欢的图表样式,将图片下载下来即可,然后导入到本地中进行引入即可:

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

设置基础内容

接下来实现新闻列表的基础内容,如下:

<template>
	<view>
		<scroll-view scroll-x class="navscroll">
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
			<view class="item">国内</view>
		</scroll-view>
		<view class="connent">
			<view class="row" v-for="item in 10">
				数据
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {

		},
		methods: {

		}
	}
</script>

<style lang="scss" scoped>
.navscroll{
	height: 100rpx;
	background: #F7F8FA;
	white-space: nowrap;
	// 去掉H5端的滚动条
	/deep/ ::-webkit-scrollbar {
		width: 4px !important;
		height: 1px !important;
		overflow: auto !important;
		background: transparent !important;
		-webkit-appearance: auto !important;
		display: block;
	}
	.item{
		font-size: 40rpx;
		display: inline-block;
		line-height: 100rpx;
		padding: 0 30rpx;

	}
}

.connent {
	padding: 30rpx;
	.row{
		border: 1px dotted #efefef;
		padding: 15rpx 0;
	}
}
</style>

uni-app--》如何制作一个APP并使用?

接下来实现浏览历史的基础内容,如下:

<template>
	<view class="user">
		<view class="top">
			<image src="../../static/logo.png" mode=""></image>
			<text>浏览历史</text>
		</view>
		<view class="connent">
    		数据
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">
.user{
	.top{
		padding: 50rpx 0;
		background: #F8F8F8;
		color: #555;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		image{
			width: 150rpx;
			height: 150rpx;
		}
		.text{
			font-size: 38rpx;
			padding-top: 20rpx;
		}
	}
	.connent {
		padding: 30rpx;
		.row{
			border: 1px dotted #efefef;
			padding: 15rpx 0;
		}
	}
}
</style>

uni-app--》如何制作一个APP并使用?

因为新闻列表界面和浏览历史界面都需要一些相同的数据,这里的话就可以将要展现的数据单独放在一个components组件里面进行一些数据的共享,通过设置一个props对象,将相关要展示的界面内容通过父组件传递过来的props数据进行相关展示,如下:

<template>
	<view class="newsbox">
		<view class="pic">
			<image :src="item.picurl" mode="aspectFill"></image>
		</view>
		<view class="text">
			<view class="title">{{item.title}}</view>
			<view class="info" v-if="!item.looktime">
				<text>作者:{{item.author}}</text>
				<text>{{item.hits}}浏览</text>
			</view>
			<view class="info" v-else>
				<text>浏览时间:{{item.looktime}}</text>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name:"newsbox",
		props:{
			item:{
				type:Object,
				default(){
					return {
						title:"组件内默认的标题",
						author:"张三",
						hits:668,
						picurl:"../../static/nopic.png",
						looktime:"2023-04-04 18:14:46"
					}
				}
			}
		},
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss"> 
.newsbox{
	display: flex;
	.pic{
		width: 229.5rpx;
		height: 160rpx;
		image{
			width: 100%;
			height: 100%;
		}
	}
	.text{
		flex: 1;
		padding: 20rpx;
		display: flex;
		flex-direction: column; // 上下排列
		justify-content: space-between; // 两侧排列
		.title{
			font-size: 32rpx;
			color: #333;
			text-overflow: -o-ellipsis-lastline;
			overflow: hidden;				//溢出内容隐藏
			text-overflow: ellipsis;		//文本溢出部分用省略号表示
			display: -webkit-box;			//特别显示模式
			-webkit-line-clamp: 1;			//行数
			line-clamp: 2;					
			-webkit-box-orient: vertical;	//盒子中内容竖直排列
		}
		.info{
			font-size: 26rpx;
			color: #999;
			text{
				padding-right: 30rpx;
			}
		}
	}
}
</style>

新闻列表和浏览历史调用components组件,并通过props进行数据传参:

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

导航栏点击样式设置

接下来设置导航栏的点击样式,当用户进行相关导航按钮的点击时,该文章会产生高亮效果,我们只需要动态绑定一个class属性,当我们选择的按钮等于当前的元素下标时,产生高亮效果,具体操作如下:

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

新闻详情页布局

设置点击新闻列表页面的新闻内容进行页面的跳转,这里可以使用自定义事件,如果要将原生事件绑定到组件当中去,可以通过 .native 进行解决,详情可参考官方文档,如下:        

uni-app--》如何制作一个APP并使用?

这里我设置好新闻列表的路由界面后,设计点击事件可以通过navigateTo实现页面跳转,如下:

uni-app--》如何制作一个APP并使用?

设置好跳转路径后,接下来可以通过设置新闻详情页的内容布局,大致情况设置如下:

<template>
	<view class="detail">
		<view class="title">新闻标题</view>
		<view class="info">
			<view class="author">编辑:张三</view>
			<view class="time">2023-12-13 15:34:59</view>
		</view>
		<view class="content">
			内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容as
		</view>
		<view class="description">
			声明:本站的内容均采集与腾讯新闻,如果侵权请联系管理(12345676890@qq.com)进行整改删除,本站进行了内容采集不代表本站及作者观点,若有侵权请及时联系管理员,谢谢您的支持。
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
			};
		}
	}
</script>

<style lang="scss">
.detail{
	padding: 30rpx;
	.title{
		font-size: 46tpx;
		color: #333;
	}
	.info{
		background: #f6f6f6;
		padding: 20rpx;
		font-size: 25rpx;
		color: #666;
		display: flex;
		justify-content: space-between;
		margin: 40rpx 0;
	}
	.content{
		padding-bottom: 50rpx;
	}
	.description{
		background: #FEF0F0;
		font-size: 26rpx;
		padding: 20rpx;
		color: #F89898;
		line-height: 1.8em;
	}
}
</style>

uni-app--》如何制作一个APP并使用?

新闻列表数据的详细展示

接下来实现调用接口来展示详细的数据,如下:

uni-app--》如何制作一个APP并使用?

通过传递item的id来获取不同id下导航栏给我们展示的新闻数据

uni-app--》如何制作一个APP并使用?

然后给一个图片用来展示,没有数据时页面的样式

uni-app--》如何制作一个APP并使用?

具体实现的结果如下:

uni-app--》如何制作一个APP并使用?

实现上拉触底效果

接下来需要实现上拉触底的效果,实现上拉触底效果的函数为:onReachBottom,如下:

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

为了呈现具体的效果,我将浏览器的网速设置为低速3G,如下:

uni-app--》如何制作一个APP并使用?

获取参数并跳转到详情页

通过设置点击函数传参,将item参数传递到函数当中,并通过模板字符串实现传参,如下:

uni-app--》如何制作一个APP并使用?

传递完参数之后,设置新闻详情界面的布局,将访问的数据进行缓存,相同的数据进行去重,详细代码如下:

<template>
	<view class="detail">
		<view class="title">{{detail.title}}</view>
		<view class="info">
			<view class="author">编辑:{{detail.author}}</view>
			<view class="time">发布日期:{{detail.posttime}}</view>
		</view>
		<view class="content">
			<rich-text :nodes="detail.content"></rich-text>
		</view>
		<view class="description">
			声明:本站的内容均采集与腾讯新闻,如果侵权请联系管理(12345676890@qq.com)进行整改删除,本站进行了内容采集不代表本站及作者观点,若有侵权请及时联系管理员,谢谢您的支持。
		</view>
	</view>
</template>

<script>
	import { parseTime } from '../utils/tool.js'
	export default {
		data() {
			return {
				options:null,
				detail:{},
			};
		},
		onLoad(e) {
			this.options = e
			this.getDetail()
		},
		methods:{
			getDetail(){
				uni.request({
					url:'https://ku.qingnian8.com/dataApi/news/detail.php',
					data:this.options,
					success:res=>{
						// res.data.posttime = parseTime(res.data.posttime) // 时间有点老,我就注释掉了换固定时间
						res.data.posttime = '2023-04-04 18:37:49'
						res.data.content = res.data.content.replace(/<img/gi,'<img style="max-width:100%"')
						this.detail = res.data
						this.saveHistory()
						uni.setNavigationBarTitle({
							title:this.detail.title
						})
					}
				})
			},
			// 保存浏览历史
			saveHistory(){
				let historyArr = uni.getStorageSync("historyArr") || []
				let item = {
					id:this.detail.id,
					classid:this.detail.classid,
					picurl:this.detail.picurl,
					title:this.detail.title,
					looktime:parseTime(Date.now())
				}
				let index = historyArr.findIndex(i=>{
					return i.id == this.detail.id
				})
				if(index>=0){
					historyArr.splice(index,1)
				}
				historyArr.unshift(item)
				historyArr=historyArr.slice(0,10)		
				uni.setStorageSync("historyArr",historyArr)
			}
		}
	}
</script>

<style lang="scss">
.detail{
	padding: 30rpx;
	.title{
		font-size: 46tpx;
		color: #333;
	}
	.info{
		background: #f6f6f6;
		padding: 20rpx;
		font-size: 25rpx;
		color: #666;
		display: flex;
		justify-content: space-between;
		margin: 40rpx 0;
	}
	.content{
		padding-bottom: 50rpx;
		// H5端
		// /deep/ img{
		// 	max-width: 100%;
		// }
	}
	.description{
		background: #FEF0F0;
		font-size: 26rpx;
		padding: 20rpx;
		color: #F89898;
		line-height: 1.8em;
	}
}
</style>

设置完新闻列表的具体内容之后,当我们再点击浏览历史的路由之后,将获取传递过来的参数以及存放在浏览器缓存中的数据,并在页面中进行展现,详细代码如下:

<template>
	<view class="user">
		<view class="top">
			<image src="../../static/logo.png" mode=""></image>
			<text>浏览历史</text>
		</view>
		<view class="connent">
			<view class="row" v-for="item in listArr">
				<newsbox :item="item" @click.native='goDetail(item)'></newsbox>
			</view>
		</view>
		<view class="nohistory" v-if="!listArr.length">
			<image src="../../static/images/no-data.jpg" mode="widthFix"></image>
			<text>暂无浏览记录</text>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				listArr:[]
			};
		},
		onShow() {
			this.getData()
		},
		methods:{
			// 跳转到详情页
			goDetail(item){
				uni.navigateTo({
					url:`/pages/detail/detail?cid=${item.classid}&id=${item.id}`
				})
			},
			// 获取缓存浏览记录
			getData(){
				let hisArr = uni.getStorageSync("historyArr") || []
				this.listArr = hisArr
			}
		}
	}
</script>

<style lang="scss">
.user{
	.top{
		padding: 50rpx 0;
		background: #F8F8F8;
		color: #555;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		image{
			width: 150rpx;
			height: 150rpx;
		}
		.text{
			font-size: 38rpx;
			padding-top: 20rpx;
		}
	}
	.connent {
		padding: 30rpx;
		.row{
			border: 1px dotted #efefef;
			padding: 15rpx 0;
		}
	}
	.nohistory{
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		image{
			width: 450rpx;
		}
		.text{
			font-size: 26rpx;
			color:#888;
		}
	}
}
</style>

具体效果如下:

项目的打包上线

项目没问题之后,可以在微信小程序下进行模拟运行,如下:

uni-app--》如何制作一个APP并使用?

没有问题之后,项目文件就会出现一个打包的文件夹,unpackage,如下:

uni-app--》如何制作一个APP并使用?

接下来进行各个平台进行上线,如果你是第一次使用这个工具的话,需要进行一些基础的配置:

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

H5平台上线

设置如下Web配置的基础设施

uni-app--》如何制作一个APP并使用?

接下来点击编辑器工具栏上的发行选项,选择 网站-PC Web或手机H5

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

微信小程序平台上线

点击发行中的小程序-微信平台发行

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

这里也可以设置为体验版,扫码进入之后应该是没数据的,可以通过手机打开调试模式来或取数据

uni-app--》如何制作一个APP并使用?

APP平台上线

这里先进行App图表进行设置,选择相应的图表

uni-app--》如何制作一个APP并使用?

点击编辑器发行的第一个,原生App云打包,选择云端证书直接打包即可。

uni-app--》如何制作一个APP并使用?

经过一段时间的等待,控制台提示我们打包成功,如下:

uni-app--》如何制作一个APP并使用?

弄到这个apk文件之后,可以发到QQ或微信上进行安装下载即可

uni-app--》如何制作一个APP并使用?

ok,传递到手机QQ上,点击下载即可,如下

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

项目开源Github

接下来进行项目的开源,给出如下详细步骤:

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

uni-app--》如何制作一个APP并使用?

uni-app--》如何制作一个APP并使用?

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

uni-app--》如何制作一个APP并使用?

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

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

git init 生成工作区

git add . 提交到暂存区

git commit -m "news" 提交到版本区

uni-app--》如何制作一个APP并使用?

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

git remote add origin git@github.com:ztK63LrD/Today-s- News.git   关联别名

git push -u origin main 推送分支

uni-app--》如何制作一个APP并使用?

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

uni-app--》如何制作一个APP并使用?

因为我在写完项目之后再推送到远程仓库的,因为仅仅是个小案例,就不再创建其它子分支了,给出项目的源地址文件:GitHub - ztK63LrD/Today-s-News: 简单的新闻列表案例 ,可自行git clone 进行到本地进行测试,如果可以的话还请一键三联或者给项目点个小星星,您的支持就是我创作的最大动力。文章来源地址https://www.toymoban.com/news/detail-408001.html

到了这里,关于uni-app--》如何制作一个APP并使用?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 uni-app 开发项目,日期和时间如何格式化?

    功能需求描述 在开发项目时,往往需要对从后端查询到的时间进行格式化,查到的时间格式一般都是 时间戳 ,一堆数字,这时候怎么转化成类似于  2023年8月15日 08:12:10  这样的格式? 在组件显示格式化后的日期 其实 uni-app 的官方拓展组件  uni-dateformat  就能实现这个需求

    2024年02月05日
    浏览(53)
  • 如何使用Vscode开发Uni-app项目以及注意事项详解

    哟,大牛来了!!! 前言 :想必大家敲代码用的编辑器大多数都是Vscode吧,随着技术的更新,uni-app成为了前端不可或缺的一项技术,但是呢,官方推荐使用的HBuilderX编辑器让习惯了使用Vscode的我们不太习惯,虽然HBuilderX编辑器对uni-app极度的友好,但还是让在座的各位大牛以及

    2024年02月05日
    浏览(63)
  • uni-app如何区分 app、h5、小程序代码; uni-app如何判断是android、ios、小程序

    uniapp是DCloud公司于2012年开始研发的能够一次代码开发,生成H5、小程序(微信、支付宝、百度、华为等)、APP等应用的技术的统称,开发工具是HBuilderX,功能非常强大,由此引申出许多技术社区与生态环境。 使用HBuilderX开发Uniapp程序的项目,用它生成多端应用,由于兼容各种

    2024年02月11日
    浏览(69)
  • uni-app返回上一个页面并进行页面刷新

    适用两个不同的页面跳转,返回上一个页面保存并刷新修改后的数据(也解决了uni-app的navigateBack返回不刷新的方法之一) 当前页: 上一页: 思路: 1、用getCurrentPages()获取打开的页面 2、保存当前页面和上一个页面 提示:不确定是不是从当前页跳转到上一页就console.log(pages[pa

    2024年02月12日
    浏览(56)
  • uni-app——如何阻止事件冒泡

    在开发移动应用程序时,我们经常需要处理用户交互事件。然而,有时候这些事件会冒泡,导致意外的行为和不良用户体验。在本文中,我们将探讨如何使用UniApp框架来阻止事件冒泡,并提供一些示例代码来帮助您理解如何实现这一功能。 1. 什么是事件冒泡? 在开始讨论如

    2024年02月08日
    浏览(49)
  • uni-app如何生成骨架屏

    参考效果 骨架屏作用是缓解用户等待时的焦虑情绪,属于用户体验优化方案。 生成骨架屏 微信开发者工具提供了自动生成骨架屏代码的能力。 使用时需要把自动生成的 xxx.skeleton.vue 和 xxx.skeleton.wxss 封装成 vue 组件。 1.点击模拟器中的页面信息/生成骨架屏,会生成两个文件

    2024年01月21日
    浏览(40)
  • 小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用

    一、官方文档找到uni-icons uni-app官网 二、下载插件 三、点击“打开HBuildX” 四、选择要安装的项目 五、勾选要安装的插件 六、安装后,项目插件目录 根目录uni_modules目录下增加uni-icons、uni-scss 七、引入组件,使用组件 八、经过测试,成功。 参考链接 http://lihuaxi.xjx100.cn/new

    2024年02月12日
    浏览(52)
  • uni-app 返回上一个页面并传递参数(微信小程序)

    方法一 问题: 会记住每次返回. 并在下次获取参数时把所有的返回监听进行 全部返回 ( 不确定别人使用时是否会出现此问题 ) 打印示例结果如下: 打印说明: 获取用户信息1: 为每次进入第二个页面 (onload) 请求的数据 监听到事件来自返回的参数: 为第一个页面监听获取的数据 方

    2024年02月09日
    浏览(67)
  • uni-app如何实现高性能

    这篇文章主要讲解uni-app如何实现高性能的问题? 什么是uni-app? 简单说一下什么是uni-app,uni-app是继承自vue.js,对vue做了轻度定制,并且实现了完整的组件化开发,并且支持多端发布的一种架构,开发的项目可适配多平台。 过内前端开发的大致分歧  国内前端开发生态现在的

    2024年04月11日
    浏览(35)
  • 【uni-app】uni-app中scroll-into-view的使用

    在使用的时候需要注意: 需要给sroll-view组件设置宽或者高(根据横纵情况) white-space:nowrap 这行代码让组件能够滑动(之前自己写的时候踩的坑) 使用 scroll-into-view ,需要开启动画效果,并且动态绑定的值必须是字符串 并且子组件的上绑定一个id值用于定位 以上就是今天要讲的内容,

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包