【小程序项目开发-- 京东商城】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之自定义搜索组件(中) ✨

文章目录

一、新建tabBar分支(选读*)

之所以为了创建分支,也是养成良好的项目开发习惯,这样在开放项目井井有条

也可以跳过本节内容,不影响阅读观感🌹

根目录下,右键打开bash

基于 master 分支在本地创建 home 子分支,用来开发和 home 相关的功能:

git checkout -b home

查看分支(前面有*代表着当前分支)

git branch

图片.png

二、配置网络请求(挂载$http)

由于平台的限制,小程序项目中不支持 axios,而且原生的 wx.request() API 功能较为简单,不支持拦截器等全局定制的功能。因此,建议在 uni-app 项目中使用 @escook/request-miniprogram 第三方包发起网络数据请求。

请参考 @escook/request-miniprogram 的官方文档进行安装、配置、使用

官方文档:https://www.npmjs.com/package/@escook/request-miniprogram

图片.png

按照官方流程,我们首先安装对应包,使用命令行工具cmd进入到项目根目录下 进行初始化一个package.json文件

npm init -y

图片.png

复制官网的导入命令输入

npm install @escook/request-miniprogram

图片.png

在入口文件进行相关配置main.js

导入对应包并进行挂载,以及定义 响应拦截器和请求响应器

(在uni-app开发中,尽量都是以uni作为顶级对象)

//导入网络请求包
import {
  $http
} from '@escook/request-miniprogram'
//挂载
uni.$http = $http
//设置请求地址的域名
$http.baseUrl = 'https://www.uinav.com'
// 请求拦截器
$http.beforeRequest =  function() {
  uni.showLoading({
    title: '数据加载中...',
  });
}
// 响应拦截器
$http.afterRequest = function(){
  uni.hideLoading()
}

三、轮播图区域

请求轮播图的数据

实现步骤:

  1. 在 data 中定义轮播图的数组
  2. 在 onLoad 生命周期函数中调用获取轮播图数据的方法
  3. 在 methods 中定义获取轮播图数据的方法

3.1 主页API

获取首页轮播图数据

  • 请求路径:https://请求域名/api/public/v1/home/swiperdata
  • 请求方法:GET
  • 请求参数
参数名 参数说明 备注
  • 响应参数
参数名 参数说明 备注
image_src 图片路径
open_type 导航链接类型
navigator_url 导航链接路径
  • 响应数据参考
{
    "message": [
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner1.png",
            "open_type": "navigate",
            "goods_id": 129,
            "navigator_url": "/pages/goods_detail/main?goods_id=129"
        },
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner2.png",
            "open_type": "navigate",
            "goods_id": 395,
            "navigator_url": "/pages/goods_detail/main?goods_id=395"
        },
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner3.png",
            "open_type": "navigate",
            "goods_id": 38,
            "navigator_url": "/pages/goods_detail/main?goods_id=38"
        }
    ],
    "meta": { "msg": "获取成功", "status": 200 }
}

在home.vue 文件 中

<script>
  export default {
    data() {
      return {
      // 定义数据
        swiperList: []
      };
    },
    onLoad() {
      // 调取方法,获取轮播图数据
      this.getSwiperList()
    },
    methods: {
      async getSwiperList() {
        // '/' 根目录即为在main.js的文件配置的 baseUrl 
        const res = await uni.$http.get('/api/public/v1/home/swiperdata')
        //输出 数据
        console.log(res.data)
      }
    }
  }
</script>

打印成功(获取数据成功)

图片.png

通过meta的status属性值判断是否 成功获取数据

 methods: {
   async getSwiperList() {
     // '/' 根目录即为在main.js的文件配置的 baseUrl 
     const res = await uni.$http.get('/api/public/v1/home/swiperdata')
     // 调取失败弹出错误提示
     if (res.data.meta.status != 200) {
       uni.showToast({
         title: "数据拉取失败", // 文字显示
         'icon': "error", // 显示错误图标
         "duration": 1500 // 设置停留事件为 1.5s duration - 持续事件
       })
       // 将调用的数据 赋值
       this.swiperList = res.data.message
     }
   }
 }

赋值成功

图片.png

四、注意事项!:

这里赋值不能像 原生小程序 调用 this.setData()使用,在小程序中可以使用this.data更新数据不更新视图thsi.setData({})数据和视图同步更新(会重新加载数据渲染页面),原理是因为在小程序中 渲染层和逻辑层无法直接数据共享,需要通过evalutejavascipt ,而setData将其封装。

uni-app 框架 比 原生小程序 性能优化好得多, 在小程序中需要使用setData()方法实现差量数据跟新,如果不使用则代码性能不好,那么在实现逻辑交换修改数据会麻烦得多,而uni-app则在底层实现自动差量数据更新,简单而高性能。

uni-app 与 原生小程序 (很不错文章)

五、渲染轮播图UI结构

uswiper 快速生成 轮播代码块
  • 使用 vue-for 动态循环轮播图数组,循环动态绑定需要标签属性节点前都要加上 :(冒号:v-bind的缩写,即动态绑定数据,后面可以跟变量或者变量表达式,如果没有冒号的则为字符串,此时循环会无法显示效果
<!-- 模板 -->
<template>
  <view>
    <!-- 渲染轮播图UI结构 -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
      <!-- 类似python for i,j in object 得到对应项目i以及索引j -->
      <swiper-item v-for="(item,i) in swiperList" :key="i">
        <view class="swiper-item">
          <image :src="item.image_src"></image>
        </view>
      </swiper-item>
    </swiper>
  </view>
</template>
<!-- 样式 -->
<style lang="scss">
  swiper {
    height: 333rpx;
    .swiper-item,
    image {
      width: 100%;
      height: 100%;
    }
  }
</style>

效果

    09b70c4c3750438e8626b4e247648834.gif

六、轮播图点击页面跳转

  • 轮播图UI结构的view标签改为navigator标签

由于navigator 标签 是导航标签,是按照内部组件的大小,分配页面的

这里将view组件转化为 navigator组件,并加上url属性跳转到商品页,对其传商品id参数

改造前:

<!-- 渲染轮播图UI结构 -->
 <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
   <!-- 类似python for i,j in object 得到对应项目i以及索引j -->
   <swiper-item v-for="(item,i) in swiperList" :key="i">
     <view class="swiper-item">
       <image :src="item.image_src"></image>
     </view>
   </swiper-item>
 </swiper>

改造后

 <!-- 渲染轮播图UI结构 -->
<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
   <!-- 类似python for i,j in object 得到对应项目i以及索引j -->
   <swiper-item v-for="(item,i) in swiperList" :key="i">
   <!-- 拼接字符串进行动态传参--!>
     <navigator class="swiper-item" :url="'/subpackages/goods_detail/goods_detail?good_id=' + item.goods_id">
       <image :src="item.image_src"></image>
    </navigator> 
   </swiper-item>
 </swiper>
  • 注意事项!:
    由于是动态传参,所以在配置url属性中前面要加上分号::v-bind的缩写,不然无法跳转页面。

效果:

3a688fbb5ef94bfaa7d0d0008d7ce26a.gif

  • 页面也成功传参
    图片.png
    ✨谢谢你的阅读,您的点赞和收藏就是我创造的最大动力!✨



相关文章
|
9天前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
3天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
8天前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
8天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
39 8
|
4天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
10天前
|
人工智能 小程序 JavaScript
【一步步开发AI运动小程序】十四、主包超出2M大小限制,如何将插件分包发布?
本文介绍了如何从零开始开发一个AI运动小程序,重点讲解了通过分包技术解决程序包超过2M限制的问题。详细步骤包括在uni-app中创建分包、配置`manifest.json`和`pages.json`文件,并提供了分包前后代码大小对比,帮助开发者高效实现AI运动功能。
|
安全 小程序 BI
商城APP开发,专业商城APP定制开发
商城APP开发,专业商城APP定制开发
349 0
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
679 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
740 1
|
1天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
19 6