🍁商城类小程序实战(三):商城首页的制作

简介: 🍁商城类小程序实战(三):商城首页的制作

商城首页的制作


一般来说,电商的大部分流量归属会到达首页,因此,首页是电商系统最重要的部分。一个好的首页会激活用户购物欲望。


在首页我们主要实现3个功能:一个是顶部的导航栏,第二个是上半部分的轮播图页面,最后是下半部分的商品列表推荐页面。为了方便开发,我们需要确定首页的框架:


806fb08b24034ab3ad899152448e4c15_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


一、顶部导航栏的设计与实现


顶部导航栏与上一篇实现的底部导航栏不太一样,底部的导航栏可以借助小程序强大的配置能力实现。而顶部的导航栏需求我们按照需求实现,也就是按照实际需求对导航栏设计和排序。


index.wxml部分


在index.wxml中,我们使用变量menuID标记当前在哪个菜单下,使用bindtap()方法进行事件监听。我们对每一个菜单都是使用menuClick()方法进行了事件绑定。实现项目导航中各个菜单的切换。


<view class="tabbar">
<view id="1" class="tabbox {{menuID==1?'curbar':''}}" bindtap="menuClick">
<view class="tabico ico-recom {{menuID==1?'cur-recom':''}}"></view>
<view class="tabtit {{menuID==1?'curtit':''}}">今日推荐</view>
</view>
...
<view id="5" class="tabbox {{menuID==5?'curbar':''}}" bindtap="menuClick">
<view class="tabico ico-flower {{menuID==5?'cur-flower':''}}"></view>
<view class="tabtit {{menuID==5?'curtit':''}}">礼品鲜花</view>
</view>
</view>
复制代码


index.wxss部分


此部分就是书写样式,和写页面样式一样,这里不做介绍,要注意的是wxss文件不支持使用本地资源,我们的图标是访问CDN拿到的,此外还可以使用Base64地址代替。


.cur-flower{
  background: url('http://qxguzbs2m.hd-bkt.clouddn.com/%E9%B2%9C%E8%8A%B1%20%28%E8%93%9D%29.png') no-repeat;
  background-size: 100%;
}
复制代码


index.js部分


我们给view都设定一个id,当通过bindtap()绑定事件触发,后台引擎会传递一个点击事件参数e给事件函数,currentTarget事件属性返回其监听器触发事件的节点,最后拿到id,实现切换的逻辑。


const app = getApp()
Page({
  data:{
    menuID: 1,
  },
  // 菜单切换监听
  menuClick(e) {
    var id = e.currentTarget.id;
    this.setData({
      menuID: id
    })
  }
})
复制代码


好啦,这样简单的顶部导航栏就完成啦,看一下效果~


7a64718a3c844c13a3b56eba8d21194b_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


在实际开发中,顶部导航栏不应该像这样静态写死在页面中,而是动态获取顶部导航栏数据,存到data中,并使用wx:for函数简化index.wxml内容。


二、轮播栏的设计与实现


轮播是电商类网站的重要一环,小程序内嵌了swiper组件,封装后可用来展示轮播内容,现在我们就来完善一个轮播组件。


index.wxml部分


<!--轮播栏设计与实现-->
<swiper class="adbox" indicator-dots="{{indicatorDots}}"
 style="width: {{imagewidth}}px; height: {{imagewidth}}px;" 
 autoplay="{{autopaly}}"
 interval="{{interval}}"
 duration="{{duration}}"
 >
  <block wx:for="{{imgUrls}}">
    <swiper-item>
      <image id="{{item.iTargetType}}{{item.sLink}}"
      style="width: {{imageWidth}}px; height: {{imageHeight}}px"
      src="{{item.sPicLink}}"
      class="slide-image"
      mode="aspectFit"
      data-gid="{{item.sLink}}"
      bindtap="bigImageClick"
      bindload="imageLoad"
      />
    </swiper-item>
  </block>
</swiper>
复制代码


我们使用变量gid来标记这个轮播对应的商品ID,使用wx:for进行循环渲染,将每一个图片都绑定到bigImageClick方法中。


index.wxss部分


.pagebox{
  width: 100%;
}
.page{
  width: 100%;
}
.adbox{
  width: 100%;
}
.slide-image{
  width: 100%;
  height: 141px;
}
复制代码


轮播的数据部分


需要获取轮播的数据并绑定到渲染层


const app = getApp()
Page({
  data:{
    "imgUrls": [{
      "sPicLink": 'http://qxguzbs2m.hd-bkt.clouddn.com/14-3C%E6%95%B0%E7%A0%81.png',
      "sLink": "1000"
    },{
      "sPicLink": 'http://qxguzbs2m.hd-bkt.clouddn.com/31-%E5%A5%B3%E8%A3%85-%E6%9C%8D%E9%A5%B0.png',
      "sLink": "1001"
    }]
  },
  // 轮播按钮点击事件
  bigImageClick(e) {
    var p = e.currentTarget.dataset.grid
    wx.navigateTo({
      url: 'pages/detai/detail?id='+p
    })
  }
})
复制代码


这样,我们的轮播栏就完成啦~一起来看看效果!


62f0ab10d5da423d8142b3184731e85f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif


我们没有将轮播图片放在小程序项目中,而是通过CDN的方式引入,确保了小程序为“小”程序,微信官方对小程序的包是有限制的,所有分包不能超过8MB,单个分包或主包大小不超过2MB。


三、商品推荐部分的设计与实现


该部分实质是一个商品列表的展示,不包含无线加载和商品数据的筛选,因此功能会更简单。


index.wxml部分


<!-- 商品推荐 -->
   <view id="index_recommend" class="listbox {{showRecommendView?'listboxhide':''}}">
          <text class="dj-tit">精品推荐</text>
          <view class="djlist cf">
            <!-- 道具列表 -->
            <block wx:for="{{index_recommends}}" wx:key="unique">
              <view class="djbox">
                <view class="comico djmark">热卖</view>
                <view id="{{item._id}}" class="dj-link" bindtap="bigImageClick">
                  <view class="djimgbox">
                    <image class="djimg" mode="widthFix" src="{{item.sPickLink}}"></image>
                  </view>
                  <text class="djname">{{item.sDescribe}}</text>
                  <view class="pricebox">
                    <text class="djpri">¥{{item.iPriceReal}}元</text>
                    <text class="djoldpri">¥{{item.iOriPrice}}元</text>
                  </view>
                </view>
                <view id="{{item._id}}" class="comico btn-cart" bindtap="bindCartTap">购物车
                </view>
              </view>
            </block>
          </view>
        </view>
复制代码


index.wxss部分


样式部分就不再介绍了,要注意的是wxss中不支持展示本地图片,你需要将图片上传到CDN或者使用Base64,方可正常展示。要查看源码的读者可去我的Github仓库中拉取,Giuhub地址在文章末尾哦~


index.js部分


// index.js
// 获取应用实例
const app = getApp()
Page({
  data:{
    "index_recommends":[
      {
      "sDescribe": "可穿戴设备",
      "iMallId": "1000",
      "sPickLink": "http://qxguzbs2m.hd-bkt.clouddn.com/%E5%8F%AF%E7%A9%BF%E6%88%B4%E8%AE%BE%E5%A4%872.png",
      "iOriPrice": "1399",
      "iPriceReal": "999"
    },
      {
      "sDescribe": "笔记本电脑",
      "iMallId": "1001",
      "sPickLink": "http://qxguzbs2m.hd-bkt.clouddn.com/%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%911.png",
      "iOriPrice": "9999",
      "iPriceReal": "7999"
    },
      {
      "sDescribe": "手机",
      "iMallId": "1000",
      "sPickLink": "http://qxguzbs2m.hd-bkt.clouddn.com/%E6%89%8B%E6%9C%BA%20%282%29.png",
      "iOriPrice": "2999",
      "iPriceReal": "1999"
    },
      {
      "sDescribe": "平板电脑",
      "iMallId": "1001",
      "sPickLink": "http://qxguzbs2m.hd-bkt.clouddn.com/%E5%B9%B3%E6%9D%BF%E7%94%B5%E8%84%91.png",
      "iOriPrice": "4999",
      "iPriceReal": "3999"
    },
  ]
  },
  // 轮播按钮点击事件
  bigImageClick(e) {
    var p = e.currentTarget.dataset.grid
    wx.navigateTo({
      url: 'pages/detai/detail?id='+p
    })
  }
})
复制代码


好啦,我们的商品推荐部分就算完成啦,来看看效果~


be1a1c5f3ae744e5b64edc470740bd22_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


参考资料:小程序开发原理与实战

⚽本文介绍了开发商城类小程序的商城首页的制作过程和一些注意事项~

⚾如果这篇文章对你有帮助的话,麻烦点赞收藏哟~

相关文章
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
1983 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
人工智能 监控 小程序
【快递鸟】选择对接你的物流商城/小程序的物流API平台
在电商竞争日益激烈的今天,物流体验已成为影响用户留存和复购的关键因素。一个高效、透明、稳定的物流系统,对于物流商城或小程序来说至关重要。然而,自建物流查询系统需要对接众多快递公司,开发周期长、维护成本高、数据整合困难。
651 0
|
人工智能 自然语言处理 小程序
让小程序拥有“视觉之眼“:DeepSeek图像识别实战指南
本文介绍如何通过DeepSeek计算机视觉技术,赋予小程序“看懂世界”的能力。从构建视觉感知系统、训练专属视觉词典到创造会思考的界面,详细讲解了实现智能相册、植物识别器和老旧照片修复等功能的步骤。最后探讨性能优化与安全合规要点,展望未来视觉智能应用的无限可能。
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
605 1
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
554 0
在线课堂+工具组件小程序uniapp移动端源码
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
1046 0
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
5576 3
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
1082 0
微信小程序更新提醒uniapp