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

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

商城首页的制作


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


在首页我们主要实现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


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

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

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

相关文章
|
3月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
457 0
|
2月前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
33 0
|
4月前
|
JSON 小程序 JavaScript
微信小程序制作 购物商城首页 【内包含源码】
这篇文章提供了一个微信小程序购物商城首页的实现方法和源码,包括页面布局、数据结构、核心代码以及如何配置tabBar和搜索框组件。
微信小程序制作 购物商城首页 【内包含源码】
|
2月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
38 0
|
4月前
|
小程序 前端开发
微信小程序商城,微信小程序微店 【毕业设计参考项目】
文章推荐了一个微信小程序商城项目作为毕业设计参考,该项目在Github上获得18.2k星,提供了详细的使用教程和前端页面实现,适合学习微信小程序开发和作为毕业设计项目。
微信小程序商城,微信小程序微店 【毕业设计参考项目】
|
4月前
|
小程序
关于我花了一个星期学习微信小程序开发、并且成功开发出一个商城项目系统的心得体会
这篇文章是作者关于学习微信小程序开发并在一周内成功开发出一个商城项目系统的心得体会,分享了学习基础知识、实战项目开发的过程,以及小程序开发的易上手性和开发周期的简短。
关于我花了一个星期学习微信小程序开发、并且成功开发出一个商城项目系统的心得体会
|
5月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
280 0
【微信小程序开发实战项目】——个人中心页面的制作
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物店商城小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物店商城小程序的详细设计和实现(源码+lw+部署文档+讲解等)
176 1
|
5月前
|
人工智能 小程序 搜索推荐
餐饮类小程序开发定制需要多少钱,费用是怎样的
餐饮小程序开发费用因需求、规模和复杂性而异。基础版约几千到万元,含菜品展示、在线点餐等功能;界面设计费几千到几万;服务器租赁年费几千到几万;维护更新费同水平。总成本通常在几万到几十万之间。选择开发商时要考虑实际需求、合同条款及付款方式。
下一篇
DataWorks