黑马优购

2023-10-30 13:40
文章标签 黑马 优购

本文主要是介绍黑马优购,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

准备工作

我们先把wx.request封装好。然后我们去配置路由。把尾部的导航配置出来。
就是我们的首页、分类、购物车、还有我的。
在全局的app.json中配置。

{"pages": [ //  这个是我们的页面,有点类似我们的vue路由"pages/index/index", "pages/category/category","pages/goods_list/goods_list","pages/goods_detail/goods_detail","pages/cart/cart","pages/collect/collect","pages/order/order","pages/search/search","pages/user/user","pages/feedback/feedback","pages/login/login","pages/auth/auth","pages/pay/pay"],"tabBar": {"list": [{ // 这个是我们小程序内置的下部导航"pagePath": "pages/index/index","text": "首页",		"iconPath": "/icons/home.png", // 没被选中的图片"selectedIconPath": "/icons/home-o.png"		// 被选中时的图片},{"pagePath": "pages/category/category","text": "分类","iconPath": "/icons/category.png","selectedIconPath": "/icons/category-o.png"},{"pagePath": "pages/cart/cart","text": "购物车","iconPath": "/icons/cart.png","selectedIconPath": "/icons/cart-o.png"},{"pagePath": "pages/user/user","text": "我的","iconPath": "/icons/my.png","selectedIconPath": "/icons/my-o.png"}]},"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#eb4450","navigationBarTextStyle": "white"},
}

封装一些公共的组件

首先看一下我们页面中哪些功能被使用了2次或以上,我们就都封装成公共的组件。比如一些搜素、头部等。在根目录下创建一个components文件夹。然后创建一个公用的文件夹
这里面存放我们公用的组件
这个文件夹中存放我们公用的组件
我们准备工作就完成了。

请求接口渲染页面

我是先写的首页,使用我们封装好的wx.request请求来数据,拿着数据去渲染页面就可以了。

列表页面渲染

到了列表页面,我们左边导航和右边数据是外部盒子的一个滚动条,而不是整个页面的,左边和右边的滚动条是不互相影响的,因此我们使用了一个小程序内置的标签。

 <scroll-view scroll-y></scroll-view>  // 作为一个盒子使用,给定一个高度或宽度,让里面的内容在这个区域出现滚动条// scroll-y   y轴开启滚动条// scroll-x   x轴开启滚动条

然后应为头部上边有一个搜素组件,占据了一定的位置,我们这个盒子的高度不能设置为100%。
这时我们可以使用css中的一个计算方法calc()方法来计算高度。

height:calc(100vh - 80px);   // 假设我们搜素组件的高度为80px
// 原生css 中的计算

这样我们就计算出来页面剩余的高度。接着就是给每一个内容绑定一个点击事件。跳转页面了。当然,跳转的时候我们需要把当前点击的id通过路由传参发送出去。
路由传参:一般常用的有2种,

wx.navigateTo({		
// 不可以跳转到tabBar页面,就是我们在全局的app.json设置的tabBar属性里的那几个路由url:'/pages/goods_list/goods_list?id=' + id  // 我们要跳转到哪个页面// 如果要传参,我们可以直接拼接就可
})wx.redirectTo({  // 只能跳转tabBar页面url:'/pages/goods_list/goods_list?id=' + id 
})
// 注意:我们传过去的数据是在this.options  这个对象中

详细列表下拉刷新,上拉加载

下拉刷新
首先我们肯定是要把页面先渲染出来,然后在实现我们的功能。
下拉刷新:首先我们要开启页面的下拉刷新,在当前页面的json中写配置

"enablePullDownRefresh":true,	// 开启用户下拉"backgroundTextStyle":"dark"	// 下拉时loading颜色// 需要加上这2个属性

然后我们页面有一个监听用于下拉动作的生命周期函数,我们可以重新请求第一页数据。
详情请看
上拉加载
首先我们要知道,小程序中有一个生命周期函数是:监听用户的滚动条是否触底。
知道这个生命周期函数就简单了,我们可以在全局定义一个num,表示当前页数,然后我们在页面显示的时候后台肯定会给我们返回一个数据的总条数。
然后了,我们根据这个总条数计算出一共需要多少页。
公式:总页数 / 每页多少条数据 = 一共有多少页
注意:因为我们页数如果是10 / 3 肯定有小数点,所以这里我们需要向上取整的。
let page = Math.ceil(total / 10); // 当然,这个10也可以是个变量的嘛。
我们在监听到用户触底的时候,首先让当前页num+1,然后判断一下是否大于我们计算出来的总页就可以了。下面我们就去请求num页的数据
详情请看
我们最后给每一条数据绑定一个点击事件,然后传过去一个id即可。

详情页
首先我们刚进详情页肯定是去根据详情列表页传过来的id去请求接口,然后使用返回的数据去渲染。
详情页大概分为收藏、加入购物车、分享、联系客服。

收藏:在我们进入页面时,需要判断我们这条数据有没有收藏过,如果收藏过,就让收藏的星星变亮。
当我们单击收藏时,我们肯定要判断当前这条数据有没有被收藏,如果被收藏是要取消收藏的,如果每有收藏就收藏。最后存入本地存储。

加入购物车:当我们点击加入购物车时,首先判断我们购物车内有没有这个商品,如果有就让这个商品的数量+1,如果没有就添加。最后存入本地存储。

分享:我们给分享一个按钮,给这个按钮一个open-type="share"属性。

联系客服:我们给联系客服一个按钮,给这个按钮一个open-type="contact"属性。
收藏详情

购物车页面
购物车页面有:全选、增加/减少数量、复选框和全选交互、计算总价、获取收货地址、支付。
全选:我们添加购物车的时候,给每一条数据都加上一个flag,表述当前复选框的checked存在不存在。点击全选,我们把这个flag属性全部变为true,然后在点一下就变为flag。
详情

点击复选框:我们渲染的时候使用

<checkbox-group></checkbox-group> // 标签,把我们一组的复选框包裹住// 他有一个bindchange 事件,当我们点击这一组内的复选框时触发。

购物车的数量加减。
都注册一个点击事件,当我们点击减号时,我们传入一个下标,让后让当前下标的num数量-1,判断当前数量是否小于1,如果小于1就提示是否删除。
当我们点击加号时,我们还是传入一个下标,让当前下标的num属性+1。

点击获取地址时,给一个点击事件,之后使用

wx.getSetting({});	
wx.chooseAddress({})
// 这2个方法来获取地址

支付
点击支付时,我们需要判断用户有没有登录呢,如果没有登录就让他去登录。查看详情
如果已经登录,我们就需要准备数据,把价格、用户购买的物品、用户都购买了哪些物品都发送到后台。然后我们先发送请求创建一个订单号,接着发起预支付接口,然后发起微信支付,支付完成后我们就手动删除掉用户购买的商品,然后跳转到订单页面。
详情

我的页面

我们需要先判断本地存储中有没有登录过,如果没有登录过,就提示让用户去登录。
登录:我们写好登录页面后,给一个登录按钮,然后写一个点击事件,在这个事件中使用

wx.getUserProfile({desc: 'desc',success(res) {  // 成功console.log(res); // res获取到我们用户的信息wx.setStorageSync('userinfo', res.userInfo);  // 本地存储wx.navigateBack({ // 返回上一页delta: 1,})}})
// 这个方法来获取我们用户的登录信息

 

这篇关于黑马优购的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308308

相关文章

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及

黑马程序员---多线程

TraditionalTread 传统线程技术回顾 创建线程的两种方式: thread3中,同时创建了Thread的子类和Runnable,那么会优先执行Thread的子类,因为Runnable的代码被当做参数传到了Thread类里,Thread子类的run方法又覆盖了父类的方法,所以会执行Thread子类的代码。 package cn.itcast.heima;public class T

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理

黑马程序员---类加载器

------- android培训、java培训、期待与您交流! ----------   简要介绍什么是类加载器和类加载器的作用 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader   类加载器也是Java类,因为其他是java类的类加载器本身也要被

部署黑马商城至云服务器

1阿里云ECS 1.1获取云服务器 想要将项目部署到云服务器,首先我们需要有一个云服务器,本次我们用的是阿里云ECS云服务器  我们登录进入主页,点击左上角的产品 依次按照上图点击,我们可以利用学生认证,然后领取免费的服务器时长 拥有了服务器后,我们点击管理控制台 我们创建一个实例服务器,依次填写好相关信息,然后我们会获取到一个公网ip,这个公网ip就是以后别人访问的主机ip服务

黑马点评11——UV统计-HyperLogLog

文章目录 HyperLogLog的用法测试百万数据的统计 HyperLogLog的用法 简直就是天生用于UV统计的,太爽了! 测试百万数据的统计 /*** info memory* 2107168* 插入1000000条数据后,内存的变化* 2121552*/@Testvoid testHyperLogLog(){String[] values = new Stri

黑马点评10——用户签到-BitMap数据结构

文章目录 BitMap用法签到功能签到统计 BitMap用法 其实数据库完全可以实现签到功能 但签到数据比较大,借鉴签到卡的思想 布隆过滤器也是使用BitMap实现的. 签到功能 因为是当前用户的当天,所以保存需要的年月日不需要参数,可以直接获取。 @Overridepublic Result sign() {// 1. 获取当前登录用户Long userId

黑马JavaWeb开发笔记14——Tomcat(介绍、安装与卸载、启动与关闭)、入门程序解析(起步依赖、SpringBoot父工程、内嵌Tomcat)

文章目录 前言一、Web服务器-Tomcat1. 简介1.1服务器概述1.2 Web服务器1.3 Tomcat 2. 基本使用2.1 下载2.2 安装与卸载2.3 启动与关闭2.4 常见问题 二、入门程序解析1. 起步依赖2. SpringBoot父工程3. 内嵌Tomcat 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记14:Tomcat(介绍、安装与卸载