一:新建项目及相关准备
1.添加公共的css文件。
2.在iconfont网站找需要用的图标,引入。
这里会遇到图标不显示的问题,查了很多资料,发现这个文章有用uniapp引入iconfont_旭陌小生的博客-CSDN博客_uniapp 引入iconfont
二:顶部的开发
![]()
使用app-plus配置,里面的titleNView,配置顶部导航(以下是titleNView的配置项)

具体配置,利用浮动配置一左一右两个图片,text是阿里图标中的unicode码

三:轮播图组件
直接输入swiper就会快捷生成swiper,当图片添加进去后,需要设置图片宽度为100%。但是swiper组件中高度是默认的,所以swiper高度要与轮播图图片一致,才能完全显示。


顶部滑动
效果是随着顶部的点击,下面也显示出对应的内容

首先渲染数据


此时还无法实现滚动,需要给父元素设定宽高,并不允许换行,子元素转换成行内块元素


选定谁谁高亮效果
首先定义一个索引 ,如果索引与当前的序号相同,则不变。如果不同,则改为选中的状态


下一步,实现顶部滑块的点击,使得下面内容随之改变
1.首先下面放一个swiper,里面写上每个滑块对应的内容

然后使用change事件,当curren改变时会调用change事件,此时我们把change绑定为上面滑块的index,当上面滑块index改变时就会触发下面的change事件。
![]()


当下面的内容滚动时,上面滑块也会跟着变化,但是不会动态变化,就是内容不会滑动。

给上面的滑块设定一个scroll-into-view,且设置id(id不能以数字开头)

当滑块变化时设置对应的index

此时上面的滑块就会跟着变化 。
当我们将之前写好的组件放入swiper中时,会发现只显示了一小部分内容,原因是swiper有默认的高度。
解决办法:在onReady中获取节点的高度。


给swiper的高度赋值,即可显示完整。

搭建node
首先全局安装
npm install express-generator -g
接着进入app中安装
express --view=ejs server
然后根据提示安装
![]()
安装后启动后端(npm start),如图是成功的

在server文件夹下的router里写接口

写完重启服务器,即可访问到数据

前端访问后端的地址,在onLoad函数访问

但此时并没有输出,因为我们是本地测试,不是访问远程服务器的接口,所以需要
1:电脑手机同一个wifi。
2不能用localhost,改为ip
查找电脑的ip,将localhost替换。
此时我们也能得到数据a

![]()
可以成功请求到数据,所以我们将需要的数据写到这个路径下
然后将请求数据的方法封装

将原有的topBar删除,使用接口赋值

再定义一个新数据newTopBar来对应渲染不同的Tabbar

传递数据并渲染

但是最后却会有多个“猜你喜欢”

解决办法:使用template标签,把Card与另一个组件放一起,且Card必须放在下面,还有判断条件需放在template中
旧写法

正确写法
修改可视区高度问题
下面这种api已经无法获取高度,因为这个类里面有组件且有数据渲染


因此不用这个方法,使用scroll-view标签
用另一个api来测试可视区域的高,用可视区的高减去滑块高


写接口传数据
根据不同滑块显示不同数据


每次滑动数据添加一个判断


上拉加载更多
定义一个变量,初始值为‘上拉加载更多’,当触底后,调用函数

传入函数并判断执行


封装request

在request.js文件中对请求进行封装
export default{
common:{
baseUrl:'http://192.168.43.243:3000/api',
data:{},
header:{
"Content-Type":"application/json",
"Content-Type":"application/x-www-form-urlencoded",
},
method:"GET",
dataType:'json'
},
request(options={}){
uni.showLoading({
title:'加载中'
})
// console.log(1);
options.url=this.common.baseUrl+options.url;
options.data=options.data||this.common.data;
options.header=options.header||this.common.header;
options.method=options.method||this.common.method;
options.dataType=options.dataType||this.common.dataType;
return new Promise((res,rej)=>{
uni.request({
...options,
success: (result) => {
if(result.statusCode!=200){
return rej()
}
let data=result.data.data;
res(data)
// 请求成功后取消加载中
setTimeout(function(){
uni.hideLoading();
},500);
}
})
})
}
}
然后在组件中引入


搜索功能
点击标题栏进入搜索,要利用到页面生命周期中的onNavigationBarButtonTap
![]()
根据我们按钮的位置来跳转

原生搜索框


![]()
接着是搜索页下面的开发,略

点击搜索跳转

搜索结果页面排序
1.点击谁谁高亮



箭头高亮以及翻转箭头



搜索
顶栏搜索框

软键盘搜索按钮


最近搜索


搜索记录本地存储


清除搜索记录

搜索词传值

在onLoad可以读取到传递的值

安装数据库

建表写数据。。(略)
连接数据库

获取接口的数据

根据搜索结果渲染数据


根据属性排序
给选项加上key

再使用计算属性,先获取当前的对象,根据status的不同传递desc或asc给后台

商品详情页



VueX状态管理:
store目录下的index.js文件

引入cart仓库

在main.js中挂载

引入仓库里的数据

全选和全不选
添加全选事件

放入仓库的action中
然后是在store中的操作



最后在页面渲染即可


单选:



此时i,实现了单选功能。且点击全选后,单击某一个选中的商品,也能取消全选。(因为之前写过getter,类似computed的功能)
删除




选择城市的插件

下载到component的uni下,并在相关页面引入

引入相关方法
此时三级联动就能显示

点击确定后返回相关城市的值

把值赋给city并显示

新增收货地址
将地址存入vuex中


写数据


保存地址

新增地址
往list数组里插入数据

提交的数据是通过双向绑定的


点击修改地址
修改地址与新增地址的跳转路径一样,之后跳转的页面根据有无参数来判断是从哪里跳过来的

如果是从修改按钮跳转,则重新渲染数据

点击保存,判断是否是修改数据,如果是,传递数据给仓库更新数据


我的订单页面




默认地址:
大致逻辑:根据路由传值判断是哪个页面跳转的,
如果是确认订单页面跳转,就
如果是确认地址,就进入修改地址

1.筛选出默认地址。

在vue文件接收数据并渲染


登录注册部分忘记保存了。。。
使用要使用数据库,应该,问题不大,吧。。
本文详细介绍了uniapp项目开发过程,包括如何引入iconfont图标,设置顶部导航titleNView,创建轮播图组件并处理其高度问题。同时,文章讨论了数据渲染、滑动事件的监听,以及如何通过接口获取和展示数据。此外,还涉及VueX状态管理在全选和单选功能中的应用,搜索功能的实现,以及城市选择插件的集成和地址管理功能的开发。

1789

被折叠的 条评论
为什么被折叠?



