用uniapp完成一个前端项目

这篇具有很好参考价值的文章主要介绍了用uniapp完成一个前端项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

持续更新中…
手敲不易,麻烦点点赞和收藏

这里给初学者提供一个uniapp的练习项目,学习uniapp需要vue和微信小程序的基础(其实微信小程序基础需要的不多),建议把基础内容学牢固了再看本文。

本项目完成的是H5+小程序+APP的新闻项目,下面就开始说一下项目流程

首先是创建新项目
用uniapp完成一个前端项目,uniapp,uni-app,前端
选择的默认模板就行,个人比较习惯用vue2,所以这个项目也勾选的是vue2,unicloud这里就不用勾选了。

这里需要的先是两个页面,首页和个人中心。这两个页面放在pages文件夹下的同名目录
用uniapp完成一个前端项目,uniapp,uni-app,前端
创建页面的时候可以在pages.json文件中定义导航栏标题。我这里使用的是SCSS,需要勾选使用scss选项。

用uniapp完成一个前端项目,uniapp,uni-app,前端

这里给一个快速入门scss的博客链接,如果需要的话可以去看一下
http://t.csdn.cn/7mJR2

创建完页面后进入page.json文件,定义tabBar
用uniapp完成一个前端项目,uniapp,uni-app,前端

我这里是已经写好的,icon的获取路径推荐去这里:https://www.iconfont.cn/
这是一个由由阿里巴巴集团旗下的阿里巴巴矢量图标库提供矢量图标和字体图标资源的网站。

iconPath和selectedIconPath分别为选中和未选中状态:
用uniapp完成一个前端项目,uniapp,uni-app,前端
头部这里的用到了全局定义,定义了文本颜色navigationBarTextStyle,文本文字navigationBarTitleText,导航栏颜色navigationBarBackgroundColor。

uniapp中(基本所有框架都是这样)局部大于全局,这里我给首页定义的文字是青年帮新闻,全局也是青年帮新闻,显示的实际是局部定义的青年帮新闻。

用uniapp完成一个前端项目,uniapp,uni-app,前端
用uniapp完成一个前端项目,uniapp,uni-app,前端

定义了一个可以横向拖动的结构,scroll-view的scroll-x和scroll-y分别是可以上下和左右滑动的属性

用uniapp完成一个前端项目,uniapp,uni-app,前端

用uniapp完成一个前端项目,uniapp,uni-app,前端

这里给item定义的是 inline-block ,使多个item居于一行。这里的css中给 scroll-view 的 white-space 属性为 nowrap ,使文本不会换行,这样首页这行就可以正常滑动。行高给的100rpx,使文字在盒子中可以居中。

如果发现这里不理解为什么要用rpx作为单位建议回去学一下微信小程序先

用uniapp完成一个前端项目,uniapp,uni-app,前端

这里给一篇博客帮助理解为什么用padding:http://t.csdn.cn/rPs9I

这里还需要在navscroll{}中加入

			/deep/::-webkit-scrollbar{
				width: 4px !important;
				height: 1px !important;
				overflow: 1px !important;
				background: transparent !important;
				-webkit-appearance: auto !important;
				display: block;
			}

这段代码起到了自定义滚动条的作用,使滑动的时候滚动条不会显示

用uniapp完成一个前端项目,uniapp,uni-app,前端

创建一个组件,创建组件之前先选择新建目录,目录名称为components,名称一定要打对。
新建的时候要勾选创建同名目录还有使用scss模板组件。

用uniapp完成一个前端项目,uniapp,uni-app,前端

uniapp中组件和vue有所不同,uniapp中的组件是自动引入的。
我定义的组件的名称是newsbox,这里可以直接使用newsbox标签。

用uniapp完成一个前端项目,uniapp,uni-app,前端

如果有对组件不清楚的可以去看看这篇关于vue组件的介绍https://blog.csdn.net/qq_39321234/article/details/129715608

我这里选择不在组件中定义样式,使整体更灵活
用uniapp完成一个前端项目,uniapp,uni-app,前端

组件的定义如下:

用uniapp完成一个前端项目,uniapp,uni-app,前端

这里的CSS非常关键

<style lang="scss">
	.newsbox{
		display: flex;
		.pic{
			width: 230rpx;
			height: 160rpx;
			img{
				width: 100%;
				height: 100%;
			}
		}
		.text{
			flex: 1;		
			padding-left: 20rpx;
			display: flex;
			flex-direction: column;
			justify-content: space-between;
			.title{
				font-size: 38rpx;
				color: #333;
				
				text-overflow: -o-ellipsis-lastline;
				overflow: hidden;
				text-overflow: ellipsis;
				display: -webkit-box;
				-webkit-line-clamp: 2;
				line-clamp: 2;
				-webkit-box-orient: vertical; 
				
			}
			.info{
				font-size: 26rpx;
				color: #999;
				padding-right: 30rpx;
			}
		}
	}
</style>

pic这里给图片定义长宽后又让图片缩放比为100%,同时前面给图片的模式定义的是ascpectFill,这使得图片按照最长边进行显示。

这段是让文字超过两行则显示省略号:
用uniapp完成一个前端项目,uniapp,uni-app,前端

这段代码创建了一个垂直方向上的列布局,其中项目沿着垂直轴均匀分布,第一个项目在顶部,最后一个项目在底部。

用uniapp完成一个前端项目,uniapp,uni-app,前端

到这里首页的布局就差不多了,然后是个人中心。

接着在个人中心里也引入组件
用uniapp完成一个前端项目,uniapp,uni-app,前端

下一步是对组件进行修改,改为传值的模式:

用uniapp完成一个前端项目,uniapp,uni-app,前端

在index这个页面里给newbox传入对应的值,以我的为例,会出现如下效果:

用uniapp完成一个前端项目,uniapp,uni-app,前端

现在加一个差异化处理,首页和个人中心界面显示的newbox组件的内容要有所差异:

<view class="info" v-if="!item.visittime">
				<text>{{item.author}}</text>
				<text>---</text>
				<text>{{item.history}}</text>
			</view>
			<view class="info" v-else>
				<text>浏览时间:{{item.visittime}}</text>
			</view>

当有浏览时间的时候就显示浏览时间,否则显示默认作者和访问次数

用uniapp完成一个前端项目,uniapp,uni-app,前端

接下来是首页本阶段的最后一个步骤:点击高亮

这里在此处进行修改:

用uniapp完成一个前端项目,uniapp,uni-app,前端

<view class="scrollNav">
			<scroll-view scroll-x="true" class="navscroll">
				<view v-for="(item,index) in 10" class="item" 
				:class="index==navIndex?'active':''" 
				@click="clickNav(index)">国内
				</view>
			</scroll-view>
</view>

这里navIndex的初始值设为0,每次点击就会赋给相应的值

用uniapp完成一个前端项目,uniapp,uni-app,前端

每次点击的导航的颜色都在这里定义:

&.active{
	color: #31C27C;
}

很多小伙伴看到这里可能不明白为什么要用 &. 这种语法,这里就解释一下:

这里的 &. 实际上是sass的语法,链接给在这里:http://t.csdn.cn/3Qsir

接下来就是文章页面相关内容,之前内容有不清楚的可以私信我或者在评论区留言

首先是点击跳转到详情页,在index这里定义:

用uniapp完成一个前端项目,uniapp,uni-app,前端

在method里添加goDetail方法:

用uniapp完成一个前端项目,uniapp,uni-app,前端

这里要创建一个detail页面,创建方法还是和前面说的一样,点击创建页面然后修改JSON配置。

这里有个需要注意的地方,为什么 @click后面需要加上.native 。这是因为这样就不会把click视为你自定义的方法了

这里可以看uni-app的官网

用uniapp完成一个前端项目,uniapp,uni-app,前端

现在就可以实现点击跳转了:

用uniapp完成一个前端项目,uniapp,uni-app,前端

用uniapp完成一个前端项目,uniapp,uni-app,前端
关于详情页的代码给在这里(首先给的是静态的,后期再改):

<template>
	<view class="detail">
		<view class="title">
			文章标题
		</view>
		<view class="info">
			<view class="author">
				编辑:鸡蛋灌饼侠
			</view>
			
			<view class="time">
				2023-8-4 16:42:30
			</view>


		</view>
		
		<view class="content">
			详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情详情
		</view>
		
		<view class="copyright">
			版权声明
		</view>
	</view>
</template>

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

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

补充一点em这个单位有关内容:

“em” 是网页设计和排版中使用的一种单位。

在 CSS 中,“em”
的大小基于元素或其父元素的字体大小。一个“em”等于元素的字体大小。例如,如果一个元素的字体大小为16像素,则1个em等于16像素。如果父元素的字体大小为20像素,则1个em等于20像素。

因此,在 CSS 属性“line-height:
1.8em;”的上下文中,行高将是元素或其父元素的字体大小的1.8倍,具体取决于字体大小的继承情况。

接下来要实现的是调用接口,获取数据并能实现点击以后查询到对应类型新闻:

用uniapp完成一个前端项目,uniapp,uni-app,前端

首先是动态获取导航列表数据:

			//获取导航列表数据
			getNaviData(){
				uni.request({
					url:"https://ku.qingnian8.com/dataApi/news/navlist.php",
					success:res=>{
						console.log(res);
						this.navArr=res.data
						// console.log(123);
					}
				})
			}

这里调用了别人的一个接口

对上面的html结构也做出修改:

		<view class="scrollNav">
			<scroll-view scroll-x="true" class="navscroll">
				<view v-for="(item,index) in navArr" 
				class="item" 
				:class="index==navIndex?'active':''" 
				@click="clickNav(index,item.id)" 
				:key="item.id">{{item.classname}}
				</view>

			</scroll-view>
		</view>

上面代码的有部分是后面的步骤实现的,这里就直接一步到位了

拓展一个知识点,调用接口的时候一定要先学会用接口测试工具(本人主学后端,用的更多的是ApiFox),调之前先测一下:

用uniapp完成一个前端项目,uniapp,uni-app,前端

这个样子就是没有问题的

包括这里打印数据也是测试有没有获取到数据

这一步做好就可以实现这样了:

用uniapp完成一个前端项目,uniapp,uni-app,前端

接下来是获取新闻列表:

			//获取新闻列表
			getNewsData(id=50){
				uni.request({
					url:"https://ku.qingnian8.com/dataApi/news/newslist.php",
					data:{
						
						cid:id
					},
					success:res=>{
						// console.log(res);
						this.newsArr=res.data
					}
				})
			}

这里返回的数据是对象类型的,跟我们在newbox中写的一样,所以前面可以直接传对象:

用uniapp完成一个前端项目,uniapp,uni-app,前端

		<view class="content" >
			<view class="row" v-for="item in newsArr" :key="item.id">
				<!-- <newsbox :item="{title:'首页标题',author:'玛卡巴卡',history:'333',picurl:'../../static/images/nopic.png'}"></newsbox> -->
				<newsbox :item="item" @click.native="goDetail"></newsbox>
			</view>
		</view>

这里有个需要注意的点:

我在获取新闻列表的时候默认给了一个值id=50,这样可以默认获取国内的新闻。
调用这个接口的时候可以传两个数据,一个cid一个num,每个新闻类别对应着不同的cid,num是一次获取新闻的数量。

点击导航切换也需要加上getNewsData方法,获取当前新闻类别的id:

			// 点击导航切换
			clickNav(index,id){
				this.navIndex=index;
				
				this.getNewsData(id);
			},

因此这里传值也有变化:

用uniapp完成一个前端项目,uniapp,uni-app,前端
目前就基本实现了完整的页面效果:


因为有的类别可能无数据,所以加上一个无数据时显示的盒子避免尴尬:

		<view class="nodata" v-if="!newsArr.length">
			
			<img src="../../static/images/tuli1.jpg" alt="" srcset="" mode="widthFix">
		</view>

这样的话切到时尚类别就会有鸡的照片显示出来:

用uniapp完成一个前端项目,uniapp,uni-app,前端

剩下别急明天更文章来源地址https://www.toymoban.com/news/detail-535462.html

到了这里,关于用uniapp完成一个前端项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

    选择运行到Android App基座 选择运行项目 1、连接手机,在手机上选择 传输文件。 2、打开 设置 - 关于本机 - 版本信息 -连续点击4-5次 版本号 ,输入手机密码,系统就进入了开发者模式。 3、 设置 其他设置 开发者选项 打开 开发者选项 打开 USB调试 。 4、回到Hbuilder,点击刷新

    2024年02月09日
    浏览(38)
  • miniprogram-to-uniapp使用指南(各种小程序项目转换为uni-app项目)

    小程序分类:uni-app qq小程序 支付宝小程序 百度小程序 钉钉小程序 微信小程序 小程序转成uni_app 小程序转为uni_app 小程序转uni_app 小程序转换 工具现在支持npm全局库、HBuilderX插件两种方式使用,任君选择,HBuilderX插件地址:https://ext.dcloud.net.cn/plugin?id=2656 【miniprogram-to-uniapp】

    2024年02月08日
    浏览(35)
  • 微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端)项目全套源码+完成文档说明+毕业论文

    摘要 随着当前社会人们的生活节奏越来越快,人们对生活效率的追求也越来越高,以往的传统的点餐方式已不能满足人们的需要,首先有些小型饭馆是需要顾客排队点餐,然后安排专人在台前记录,这样不仅造成时间上的浪费,还浪费人力,有些大型餐厅是当顾客入座后,安

    2024年04月15日
    浏览(47)
  • uni-app 前端项目(vue)部署到本地win系统Nginx上 http

     背景: 若依移动端的项目:整合了uview开源ui框架 部署流程 1. 配置后端请求接口基本路径地址: 2. 打包复制到nginx下:nginx/htm/newxss, (newxss目录手动创建) 3.在nginx上配置了站点与api代理  Nginx配置 安装个稳定版本的:nginx-1.24.0 部署配置: 1.增加了网站: 8083端口 的, 网站

    2024年04月12日
    浏览(30)
  • 创建一个uni-app项目并运行再浏览器及微信小程序

    第一步: 打开HBuilder X 点击文件列表 新建 项目 第二步: 如图所示(根据项目所需要的进行选择) 第三步: 创建完成之后项目文件的(介绍以及作用) 第四步: 如何将uni-app项目运行到不同的浏览器,我在这里运行的是微信小程序 (1) 点击运行可以查看到项目的多种运行方式 (2

    2024年02月12日
    浏览(34)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(49)
  • uni-app 小程序使用腾讯地图完成搜索功能

    前言 使用uni-app开发小程序时候使用腾讯地图原生SDK是,要把原生写法转成vue写法在这记录一下。 我们需要注意的是使用高德地图时我们不仅要引入SDK,还要再uni-app中配置允许使用。 由于uni-app内置地图就是腾讯,所以获取位置的api,uni.getLocation坐标不用转换,直接使用。

    2024年02月08日
    浏览(33)
  • (小程序)基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    版本信息: 点击编辑器的文件 新建 项目(快捷键Ctrl+N) 2.选择uni-app项目,输入项目名/路径,选择项目模板,勾选vue3版本,点击创建,即可成功创建。 3.点击编辑器的运行 运行到浏览器 选择浏览器 当然也可以运行到手机或模拟器、运行到小程序工具。 到这里一个简单的

    2024年02月16日
    浏览(54)
  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

    聚沙成塔——每天进步一点点,大家好我是几何心凉,不难发现越来越多的前端招聘JD中都加入了uni-app 这一项,它也已经成为前端开发者不可或缺的一项技能了,所以凉哥为大家推出 聚沙成塔【45天玩转uni-app】 专栏,帮助大家对 uni-app 进行学习和理解,uni-app可以通过一套代

    2023年04月23日
    浏览(78)
  • 『UniApp』uni-app-打包成App

    大家好,我是 BNTang, 在上一节文章中,我给大家详细的介绍了如何将我开发好的项目打包为微信小程序并且发布到微信小程序商店 趁热打铁,在来一篇文章,给大家详细的介绍如何将项目打包成APP。 打包 App 也是一样的,首先需要配置关于 App 应用的基础信息,打开 manifest

    2024年02月04日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包