1.小程序功能开发-首页功能

通过并发请求获取首页的数据。

// 导入封装的网络请求模块实例
import http from '../utils/http'
// 定义接口api函数
export const reqIndexData = () => {// 通过方式请求并获取首页数据,提升页面渲染速度// 通过Promise.all进行并发请求return Promise.all([http.get('/index/findBanner'),http.get('/index/findCategory1'),http.get('/index/advertisement'),http.get('/index/findListGoods'),http.get('/index/findRecommendGoods')])
}import { reqIndexData } from '../../api/index'
// 调用获取数据
Page({data: {bannerList: [],categoryList: [],activeList: [],hotList: [],guessList: []},// 获取首页数据async getIndexData() {// 调用接口API函数,获取数据const res = await reqIndexData()// 对数据赋值的时候要注意索引this.setData({bannerList: res[0].data,categoryList: res[1].data,activeList: res[2].data,guessList: res[3].data,hotList: res[4].data})},// 监听页面的加载onLoad() {// 页面加载后,调用获取首页数据的方法this.getIndexData()}
})
2. 分析轮播图区域并渲染
 <navigator class="navigator" url="/pages/goods/detail/detail?goodsId={{ item.id }}"><image class="img" src="{{ item.imageUrl }}"></image>
</navigator>
3.实现轮播图和指示点的联动

切换轮播图时面板指示点高亮,想实现一一对应的关系,要借助索引

Component({/*** 组件的属性列表*/properties: {// 轮播图数据bannerList: {type: Array,value: ['../../../assets/banner/banner-1.jpg', '../../../assets/banner/banner-2.jpg', '../../../assets/banner/banner-3.jpg']}},/*** 组件的初始数据*/data: {activeIndex: 0},/*** 组件的方法列表*/methods: {// 获取被激活的轮播图索引getSwiperIndex(event) {//   console.log(event)const { current } = event.detailthis.setData({activeIndex: current})}}
})
4.分析商品导航区域并渲染
 <!-- 导航链接 --><navigator class="navigator-nav" url="/pages/goods/list/list?category1Id={{ item.id }}"><image class="nav-img" src="../../../assets/images/cate-1.png" /><text class="nav-text">{{ item.name }}</text></navigator><view class="adver"><view class="adver-left"><navigator url="/pages/goods/list/list?category2Id={{ activeList[0].category2Id }}"><image src="{{ activeList[0].imageUrl }}" mode="widthFix" /></navigator></view><view class="adver-right"><view><navigator url="/pages/goods/list/list?category2Id={{ activeList[1].category2Id }}"><image src="activeList[1].imageUrl" mode="widthFix" /></navigator></view><view><navigator url="/pages/goods/list/list?category2Id={{ activeList[2].category2Id }}"><image src="activeList[2].imageUrl" mode="widthFix" /></navigator></view></view></view>
5.首页骨架屏组件

骨架屏是页面的空白版本,开发者会使用css绘制一些灰色的区块,将页面内容大致勾勒出轮廓,通常会在页面完全渲染之前,将骨架屏代码进行展示,数据加载完之后,在替换成真实的内容。
目的:优化用户体验。
使用方法:
在 C:\Users\Desktop\模板文件\miniprogram\pages\index\index.wxml 引入模板

<import src="index.skeleton.wxml"/>
<template is="skeleton" wx:if="{{loading}}" />

在 C:\Users\Desktop\模板文件\miniprogram\pages\index\index.wxss 中引入样式

@import "./index.skeleton.wxss";
6.获取商品分类数据
// 导入封装的接口api函数
import { reqCategoryData } from '../../api/category'Page({// 初始化数据data: {categoryList: [] // 商品分类列表数据},// 商品分类的数据async getCategoryData() {const res = await reqCategoryData()if (res.code === 200) {this.setData({categoryList: res.data})}},// 监听页面加载onLoad() {// 调取获取商品分类的数据的方法this.getCategoryData()}
})import http from '../utils/http'export const reqCategoryData = () => {return http.get('/index/findCategoryTree')
}
7.渲染一级分类并实现切换功能

一级分类

<view class="left-view-item {{ activeIndex === index ? 'active' : '' }}" wx:for="{{ categoryList }}" wx:key="id" bind:tap="updateActive" data-index="{{ index }}"> {{ item.name }} </view>

切换功能

  // 实现一级分类的切换效果updateActive(event) {// console.log(event.currentTarget.dataset)const { index } = event.currentTarget.datasetthis.setData({activeIndex: index})},
8.渲染二级分类数据

在一级分类下存在children字段,里面的数据是一级分类对应的二级分类的数据,在访问以及分类时,只要将一级分类对应的二级分类拿出来进行渲染即可。

<view><view wx:for="{{ categoryList[activeIndex].children }}" wx:key="index" class="right-view-item"><navigator class="navigator" url="/pages/goods/list/list?category2Id={{ item.id }}"><image class="" src="../../assets/images/cate-1.png"></image><text class="goods_item_name">{{ item.name }}</text></navigator></view></view>
9.mobx-miniprogram

方便页面、组件之间的传递。
是一个轻量级状态管理库。
定义管理的状态是响应式的,一旦状态改变,所有关联组件都会自动更新相对应的数据,全局共享,自动更新视图组件,提升开发效率。

需要注意: 在使用 mobx-miniprogram 需要安装两个包: mobx-miniprogram 和 mobx-miniprogram-bindings

  1. mobx-miniprogram 的作用: 创建 Store 对象, 用于存储应用的数据
  2. mobx-miniprogram-bindings 的作用: 将状态和组件、页面进行绑定关联, 从而在组件和页面中操作数据
npm install mobx-miniprogram mobx-miniprogram-bindings
10.创建Store对象

如果需要创建 Store 对象需要使用 mobx-miniprogram ,因此需要先熟悉 mobx-miniprogram 三个核心概念:

  1. observable :用于创建一个被监测的对象,对象的属性就是应用的状态(state),这些状态会被转换成响应式数据。
  2. action :用于修改状态(state)的方法,需要使用 action 函数显式的声明创建。
  3. computed :根据已有状态(state)生成的新值。计算属性是一个方法,在方法前面必须加上 get 修饰符
import { observable, action } from 'mobx-miniprogram'// store对象
export const numStore = observable({numA: 1,numB: 2,// action用来修改状态update: action(function () {this.numA += 1this.numB += 1}),// 计算属性基于已有状态产生新状态get sum() {// 必须有返回值return this.numA + this.numB}
})

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

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

相关文章

Java Stream流:高效数据处理全解析

Java Stream 流详解 Stream 是 Java 8 引入的 API&#xff0c;用于高效处理集合数据&#xff08;如 List、Set、Map 等&#xff09;。它支持函数式编程风格&#xff0c;能实现复杂的查询、过滤、映射等操作&#xff0c;并支持并行处理以提升性能。核心特点 非存储数据结构&…

光子精密双目3D线激光轮廓测量仪,摆脱视觉盲区,1台更比2台强!

光子精密双目3D线激光轮廓测量仪&#xff08;GL-8160D&#xff09;&#xff0c;在GL-8000系列的基础上创新升级。GL-8160D采用全新双目单线设计&#xff0c;突破传统3D视觉检测限制&#xff0c;而且不受外部拼接标定误差影响&#xff0c;有效消除单目盲区&#xff0c;抗光干扰能…

基于Linux驱动的可见光通信方案 —— 开源 OpenVLC 平台入门(附 BeagleBone Black 驱动简单解析)

60 美元玩转 Li-Fi —— 开源 OpenVLC 平台入门&#xff08;附 BeagleBone Black 及驱动解析&#xff09;一、什么是 OpenVLC&#xff1f; OpenVLC 是由西班牙 IMDEA Networks 研究所推出的开源可见光通信&#xff08;VLC / Li-Fi&#xff09;研究平台。它把硬件、驱动、协议栈…

Git系列--4.Git分支设计规范

目录 一、了解开发环境 1.1概念阐述 1.2系统概括图 二、设计规范之GitFlow模型 2.1具体分支概念 2.1.1master 分⽀ 2.1.2release 分⽀ 2.1.3develop 分⽀ 2.1.4feature 分⽀ 2.1.5hotfix 分⽀ 2.2宏观表格 三、分支流程图 一、了解开发环境 1.1概念阐述 对于开发人员…

【时间之外】AI在农机配件设计场景的应用

目录 农机制造业痛点 AI场景畅想 落后就要挨打 农机制造业痛点 最近&#xff0c;我与一位在制造业摸爬滚打多年的老友相聚。酒过三巡&#xff0c;话题渐渐转到他的事业上。他兴致勃勃地跟我讲起&#xff0c;自己正主导着一个规模达几千万的项目&#xff0c;生产基地远在孟加…

基于定制开发开源AI智能名片与S2B2C商城小程序的旅游日志创新应用研究

摘要&#xff1a;本文探讨了旅游日志在记录旅行美景与人物中的重要性&#xff0c;结合当下数字化发展趋势&#xff0c;引入定制开发开源AI智能名片与S2B2C商城小程序的概念。分析如何将这两者与旅游日志风格元素相融合&#xff0c;打造一种创新的旅游记录与分享模式&#xff0c…

XGBoosting算法详解(Boosting思想的代表算法)

文章目录相关文章一、Boosting思想&#xff1a;从弱到强的串行提升二、XGBoost算法思想&#xff1a;GBDT的极致优化三、XGBoost数学原理&#xff1a;从目标函数到树分裂3.1 目标函数定义3.2 正则化项&#xff1a;控制树的复杂度3.3 泰勒二阶展开&#xff1a;简化目标函数3.4 化…

Vue + Element UI 实现选框联动进而动态控制选框必填

目录 一. 需求描述 二. 解决思路 三. 代码实现 四. 效果展示 一. 需求描述 如下图所示&#xff0c;新增人员页面&#xff0c;有字段"Leader DS"和"Leader DS名称"。 现在我要在字段"Leader DS"和"Leader DS名称"字段下方再添加一…

高通SG882G平台(移远),Ubuntu22编译:1、下载代码

不要使用Ubuntu24&#xff0c;不稳定。 docker听着美好&#xff0c;其实也有问题。比如你给别人的时候&#xff0c;虚拟机直接给过去&#xff0c;马上就能用。 安装工具 sudo apt-get install -y \ diffstat xmlstarlet texinfo chrpath gcc-aarch64-linux-gnu libarchive-d…

Android音视频探索之旅 | C++层使用OpenGL ES实现视频渲染

一.前言 在学习音视频的过程中&#xff0c;实现视频渲染是非常常见的&#xff0c;而渲染的方式也挺多&#xff0c;可以使用Java层的OpenGL ES进行图形渲染&#xff0c;也可以使用Ffmpeg来显示&#xff0c;还有就是通过C层的OpenGL ES来进行渲染。OpenGL ES是OpenGL三维图形API…

公链的主要特征有哪些?

公链&#xff08;公共区块链&#xff09;是指对所有人开放、无需授权即可参与的区块链&#xff0c;其主要特征包括&#xff1a;- 开放性&#xff1a;任何人都可以自由加入网络&#xff0c;参与节点运行、数据验证或交易&#xff0c;无需经过中心化机构的审核。- 去中心化&#…

博途多重背景、参数实例--(二)

引用官方技术支持&#xff1a; 《《 博图&#xff0c;怎么把DINT类型转换成TIME&#xff0c;就是MCGS触摸屏上设置时间&#xff0c;PLC里的定时器TIME 》》 我们把上面的实现&#xff0c;封装成FC,FB块&#xff08;FB程序内调用定时器指令时的选项不…

单片机基础

什么是嵌入式系统&#xff1f; 嵌入式系统通常指的是专门为某种功能设计的微型计算机系统&#xff0c;比如智能手表、家电控制板、汽车ECU等。 什么是嵌入式系统的IO&#xff1f; IO&#xff08;Input/Output&#xff0c;输入/输出&#xff09;就是嵌入式系统与外部世界“交…

全连接神经网络(MLP)原理与PyTorch实现详解

一、全连接神经网络概述全连接神经网络(Fully Connected Neural Network)&#xff0c;也称为多层感知机(Multi-Layer Perceptron, MLP)&#xff0c;是深度学习中最基础的神经网络结构之一。它由多个全连接层组成&#xff0c;每一层的神经元与下一层的所有神经元相连接。1.1 神经…

推荐系统-数据分割、性能验证

推荐系统基础概念前言 作者根据开源项目 gorse 的每一步提交&#xff0c; 系统性学习推荐系统架构组成以及gorse中使用的推荐算法的实现。 通过参考算法文档以及代码实现&#xff0c;作者对gorse的学习过程以及进度 与 博客发布的时间线保持一致数据集分割原因 推荐系统的根本任…

从电商新手到单日变现5000+,我是如何做到闲鱼爆单的

很多人想做项目赚钱&#xff0c;却总是迈不出第一步。今天给大家分享一个可以从电商小白到成功跑通项目&#xff0c;实现单日GMV 5000的项目。今天将分享从选品、内容制作、销售服务的全过程实战经验。1&#xff1a;闲鱼实战&#xff0c;强执行力01实操前的准备执行力就是你的动…

vue3实现pdf文件预览 - vue-pdf-embed

参考地址&#xff1a;https://juejin.cn/post/7105933034771185701 这个参考文章的代码直接可以复制使用&#xff0c;样式也是给到的&#xff0c;但是实现的是一页一页的显示pdf内容&#xff0c;我的需求是要全部展示出来&#xff0c;页码切换时是做一个滚动定位操作。 思路&am…

【AI论文】OmniPart:基于语义解耦与结构连贯性的部件感知三维生成

摘要&#xff1a;创建具有显式、可编辑部件结构的三维资产&#xff0c;对于推动交互式应用的发展至关重要。然而&#xff0c;大多数生成方法仅能生成整体式形状&#xff0c;限制了其实际应用价值。我们提出OmniPart——一种新型的部件感知三维物体生成框架&#xff0c;旨在实现…

Pandas-数据查看与质量检查

Pandas-数据查看与质量检查一、数据查看&#xff1a;快速掌握数据概况1. 整体概览&#xff1a;shape与info()2. 数值特征预览&#xff1a;describe()3. 随机抽样&#xff1a;head()与sample()二、数据质量检查&#xff1a;识别与处理问题1. 缺失值检查与处理处理策略&#xff1…

类和对象拓展——日期类

一.前言通过前面对类和对象的学习&#xff0c;现在我们可以开始实践日期类的代码编写。在实际操作过程中&#xff0c;我会补充之前文章中未提及的相关知识点。二.正文 1. 日期类代码实现我们先来看看要实现什么功能吧&#xff0c;把他放在Date.h中#pragma once #include<ios…