【小程序项目开发-- 京东商城】uni-app之首页商品楼层

简介: 【小程序项目开发-- 京东商城】uni-app之首页商品楼层

专栏内容

✨-- 京东商城uni-app项目搭建 --✨

✨-- 京东商城uni-app 配置tabBar & 窗口样式 --✨

✨-- 京东商城uni-app开发之分包配置 --✨

✨-- 京东商城uni-app开发之轮播图 --✨

✨-- 京东商城uni-app之分类导航区域 --✨

✨-- 京东商城uni-app 首页楼层商品 --✨

✨-- 京东商城uni-app 商品分类页面(上) --✨

✨-- 京东商城uni-app 商品分类页面(下) --✨

✨-- 京东商城uni-app之自定义搜索组件(上) --✨

✨-- 京东商城uni-app之自定义搜索组件(中) --✨

文章目录

一、效果图:

图片.png

二、数据获取:

  • 数据接口样式【分为标题(包括图片,文字),列表(图片文字)】
{
    "message": [
        {
            "floor_title": {
                "name": "时尚女装",
                "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_title.png"
            },
            "product_list": [
                {
                    "name": "优质服饰",
                    "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_1@2x.png",
                    "image_width": "232",
                    "open_type": "navigate",
                    "navigator_url": "/pages/goods_list?query=服饰"
                },
                {
                    "name": "春季热门",
                    "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_2@2x.png",
                    "image_width": "233",
                    "open_type": "navigate",
                    "navigator_url": "/pages/goods_list?query=热"
                },
                {
                    "name": "爆款清仓",
                    "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_3@2x.png",
                    "image_width": "233",
                    "open_type": "navigate",
                    "navigator_url": "/pages/goods_list?query=爆款"
                },
                {
                    "name": "倒春寒",
                    "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_4@2x.png",
                    "image_width": "233",
                    "open_type": "navigate",
                    "navigator_url": "/pages/goods_list?query=春季"
                },
                {
                    "name": "怦然心动",
                    "image_src": "https://www.zhengzhicheng.cn/pyg/pic_floor01_5@2x.png",
                    "image_width": "233",
                    "open_type": "navigate",
                    "navigator_url": "/pages/goods_list?query=心动"
                }
            ]
        },
    "meta": { "msg": "获取成功", "status": 200 }
}
  • 定义data数据
 data() {
      return {
        // 楼层数据数组
        floorList: []
      };
  • method定义调取数据方法
//获取楼层导航数据
      async getfloorList() {
        const {
          data: res
        } = await uni.$http.get('/api/public/v1/home/floordata')
        //如果调取失败 显示报错提示
        if (res.meta.status != 200) return uni.$showMsg()
        this.floorList = res.message
      },
  • onload调取函数图片.png

三、UI 界面渲染

  • 在动态循环数据列表渲染页面图片等,可以使用vue 语法 v-bind:,动态绑定,也支持mustache语法 ,但是只限于将文字等一些输出用mustache语法 如输出标题文字,组件内属性还是不支持mustache语法的

且对于所得到图片得样式动态 style 中 需要 后面加上 {} 表示动态渲染

<!-- 楼层区域 -->
    <!-- 楼层容器 -->
    <view class="">
      <!-- 楼层 item -->
      <view class="floor_list" v-for="(item,index) in floorList" v-bind:key="index">
        <!-- 楼层标题 -->
        <view class="floor_title">
          <image v-bind:src="item.floor_title.image_src" class="floor_title_image" mode="widthFix"></image>
          <!-- <text>{{item.floor_title.name}}</text> -->
        </view>
        <!-- 楼层列表 -->
        <view class="floor_product">
          <!-- 左侧大图片 -->
          <view class="left-img-box">
            <!-- 拼接 不全单位px -->
            <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}">
            </image>
          </view>
          <!-- 右侧图片列表 -->
          <view class="right-img-box">
            <!-- 判断索引为0得情况 -->
            <view class="right-img-item" v-for="(product,i) in item.product_list" v-bind:key="i" v-if="i != 0">
              <image :src="product.image_src" :style="{width: product.image_width + 'rpx'}" mode="widthFix">
            </view>
            </image>
          </view>
        </view>
      </view>
    </view>
//注释:样式
  .floor_title {
    display: flex;
    flex-direction: column;
  }
  .floor_title image {
    height: 60rpx;
    width: 100%;
  }
  .floor_product {
    display: flex;
    padding: 10rpx;
  }
  .right-img-box {
    justify-content: space-around;
    display: flex;
    flex-wrap: wrap;
  }

在设置样式中 自动换行样式为
flex-wrap: wrap;
而不能使用
white-space: normal

这是因为display:flex 会与white-space: normal导致样式冲突,无法达到效果

效果图:

12.gif


四、跳转到商品页

图片.png

    图片.png

4.1、处理接口URL地址

  • 在实际中接口所给的URL地址与自己的命名页面不匹配,且需要对应页面参数,则需要对其进行操作

由于调取数据和渲染页面是同步操作,所以这里处理URl链接则使用forEach循环

他与for区别在于 (for&forEach文章讲解 & 箭头函数

  • for是通过下标来索引对应数据,forEach是 JavaScript定义的数组的函数方法 通过 JavaScript底层程序 循环遍历数组的数据元素,原理是指针指向,所以在面对几百万数据集,for可能会卡,forEach还是几毫秒。
  • for 可以通过break 中断, forEach不可以
  • forEach是数组的函数方法,无法进行对变量进行赋值修改等操作

两者最大的区别

  • 🎏forEach 是一种函数 可以通过设定参数 来 存储索引下标数据数值,这样在操作上更加的便利
  • 🎏for循环的执行 只能是通过循环生成索引下标数值 然后通过索引下标 操作 数组的数据元素

图片.png

  • 实现代码
 methods: {
   //获取楼层导航数据
   async getfloorList() {
     const {
       data: res
     } = await uni.$http.get('/api/public/v1/home/floordata')
     //如果调取失败 显示报错提示
     if (res.meta.status != 200) return uni.$showMsg()
     // 双重forEach循环修改URL
     res.message.forEach(floor => {  
       floor.product_list.forEach(prd => {  
         prd.navigator_url = '/subpackages/goods_list/goods_list?' + prd.navigator_url.split('?')[1]  //切割为列表 取后面的页面参数
       })
     })
     this.floorList = res.message
   },

成功修改

图片.png

五、配置页面组件navigator跳转页面

  • 将对应 商品页的view 改为 navigator 组件
 <!-- 楼层区域 -->
    <!-- 楼层容器 -->
    <view class="">
      <!-- 楼层 item -->
      <view class="floor_list" v-for="(item,index) in floorList" v-bind:key="index">
        <!-- 楼层标题 -->
        <view class="floor_title">
          <image v-bind:src="item.floor_title.image_src" class="floor_title_image" mode="widthFix"></image>
          <!-- <text>{{item.floor_title.name}}</text> -->
        </view>
        <!-- 楼层项目列表 -->
        <view class="floor_product">
          <!-- 左侧大图片 -->
          <navigator class="left-img-box" :url="item.product_list[0].navigator_url">
            <!-- 拼接 不全单位px -->
            <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}">
            </navigator>
          <!-- 右侧图片列表 -->
          <view class="right-img-box">
            <!-- 判断索引为0得情况 -->
            <navigator class="right-img-item" v-for="(product,i) in item.product_list" v-bind:key="i" v-if="i != 0" :url="product.navigator_url">
              <image :src="product.image_src" :style="{width: product.image_width + 'rpx'}" mode="widthFix">
            </navigator>
            </image>
          </view>
        </view>
      </view>
    </view>

接受页面参数,并渲染为窗口标题

在goods_list.vue文件中

export default {
    data() {
      return {
        title:''   //定义参数
      };
    },
    onLoad(options){
      this.title = options  // 接收参数并赋值
      },
    onReady(){
      uni.setNavigationBarTitle({
        title: this.title.query  // 编程时 设置样式
      })
    }

效果:

13.gif

六、分支合并与提交(选读*)

  • 将本地home分支合并到master分支
  • 代码推送到远程仓库
  • 删除分支

操作

  1. git branch 注释: 查看当前分支
  2. git status 注释:查看当前文件状态
  3. git add . 注释:添加所有文件到暂存区
  4. git commit -m “完成了首页功能的开发” 注释:提交到本地仓库
  5. git push -u origin home 注释: -u是配置 upstream,提交本地仓库到远程仓库的分支home保存,确定了默认主机
  6. git checkout master 注释:切换分支到master
  7. git merge home 注释: 合并分支
  8. giit push 注释:由于前面-u 设置了upstearm 所以这次默认提交到master 分支(不需要其他参数)
  9. git branch -d home 注释:删除本地home分支

图片.png

✨谢谢你的阅读,您的点赞和收藏就是我创造的最大动力!


相关文章
|
9天前
|
运维 小程序 前端开发
结合圈层营销策略,打造稳定可靠的圈子app系统,圈子小程序!
圈子系统是一种社交平台,用户可按兴趣、职业等创建或加入“圈子”,进行内容发布、讨论和资源共享。开发时需考虑需求分析、技术选型(如PHP、MySQL)、页面设计、功能实现(注册、登录、发布、评论等)、测试优化及运维管理。圈层营销则通过精准化、高端化的方式传递品牌信息,增强客户归属感。圈子小程序基于微信等平台,具备跨平台、便捷性和社交性,开发过程中需明确需求、选择技术框架、设计页面并确保稳定性和流畅性。
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
783 1
|
2天前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
3天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
10天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
70 3
|
17天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
24天前
|
缓存 移动开发 小程序
uni-vue3-wetrip自创跨三端(H5+小程序+App)酒店预订app系统模板
vue3-uni-wetrip原创基于vite5+vue3+uniapp+pinia2+uni-ui等技术开发的仿去哪儿/携程预约酒店客房app系统。实现首页酒店展示、预订搜索、列表/详情、订单、聊天消息、我的等模块。支持编译H5+小程序+App端。
70 8
|
9天前
|
小程序 算法 安全
语音交友小程序APP开发/交友小程序软件开发/PC独立后台管理+会员
本方案涵盖语音交友小程序APP开发、交友小程序软件开发及PC独立后台管理加会员系统。小程序功能包括语音匹配、群聊派对、动态广场和个人中心,支持点赞、评论等社交互动,优化用户体验。PC后台管理系统实现用户、内容和数据分析管理,会员系统提供注册、积分、等级等功能,确保数据安全并提升运营效率。
45 0
|
10天前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
2月前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
65 3

热门文章

最新文章