当前位置: 首页 > article >正文

智慧商城:首页静态结构,封装首页请求接口,轮播和导航和商品基于请求回来的数据进行渲染

编写首页静态结构

在架子layout中编写首页home静态样式(直接在笔记中找并复制粘贴)

<!-- 1.静态结构和样式 `layout/home.vue` -->

<template>
  <div class="home">
    <!-- 导航条 -->
    <van-nav-bar title="智慧商城" fixed />

    <!-- 搜索框 -->
    <van-search
      readonly
      shape="round"
      background="#f1f1f2"
      placeholder="请在此输入搜索关键词"
      @click="$router.push('/search')"
    />

    <!-- 轮播图 -->
    <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
      <van-swipe-item>
        <img src="@/assets/banner1.jpg" alt="">
      </van-swipe-item>
      <van-swipe-item>
        <img src="@/assets/banner2.jpg" alt="">
      </van-swipe-item>
      <van-swipe-item>
        <img src="@/assets/banner3.jpg" alt="">
      </van-swipe-item>
    </van-swipe>

    <!-- 导航 -->
    <van-grid column-num="5" icon-size="40">
      <van-grid-item
        v-for="item in 10" :key="item"
        icon="http://cba.itlike.com/public/uploads/10001/20230320/58a7c1f62df4cb1eb47fe83ff0e566e6.png"
        text="新品首发"
        @click="$router.push('/category')"
      />
    </van-grid>

    <!-- 主会场 -->
    <div class="main">
      <img src="@/assets/main.png" alt="">
    </div>

    <!-- 猜你喜欢 -->
    <div class="guess">
      <p class="guess-title">—— 猜你喜欢 ——</p>

      <div class="goods-list">
        <GoodsItem v-for="item in 10" :key="item"></GoodsItem>
      </div>
    </div>
  </div>
</template>

<script>
import GoodsItem from '@/components/GoodsItem.vue'
export default {
  name: 'HomePage',
  components: {
    GoodsItem
  }
}
</script>

<style lang="less" scoped>
// 主题 padding
.home {
  padding-top: 100px;
  padding-bottom: 50px;
}

// 导航条样式定制
.van-nav-bar {
  z-index: 999;
  background-color: #c21401;
  ::v-deep .van-nav-bar__title {
    color: #fff;
  }
}

// 搜索框样式定制
.van-search {
  position: fixed;
  width: 100%;
  top: 46px;
  z-index: 999;
}

// 分类导航部分
.my-swipe .van-swipe-item {
  height: 185px;
  color: #fff;
  font-size: 20px;
  text-align: center;
  background-color: #39a9ed;
}
.my-swipe .van-swipe-item img {
  width: 100%;
  height: 185px;
}

// 主会场
.main img {
  display: block;
  width: 100%;
}

// 猜你喜欢
.guess .guess-title {
  height: 40px;
  line-height: 40px;
  text-align: center;
}

// 商品样式
.goods-list {
  background-color: #f6f6f6;
}
</style>

 引入封装好的GoodsItem组件,v-for 进行渲染,因为很多地方会用到商品组件

 

在utils文件夹下vant-ui.js文件中按需导入相应组件

 

 封装接口

找到接口,将请求首页数据封装到 api 文件夹的home.js文件中 

 

get的第二个参数是配置项,在get中用params 传参

 

异步请求首页数据,在控制台打印

 轮播图,导航组,商品组

请求数据赋值给变量

 

轮播渲染 ,导航渲染

 现在bannerList数组中存储的是三个对象,三个对象中都包含imgName,imgUrl和 link

动态渲染轮播图和导航 

 

商品父传子动态渲染 

 打印出请求回来的商品列表

 

 

将请求回来的数据放入到子组件中进行渲染,然后本父组件通过引用子组件标签使用 

通过在负组件中 子组件标签:item="item"将数组中每个item项传递给子组件

子组件通过在props中接收并进行渲染 
注:v-if 在此作判断,如果有数据了就可以渲染了

 

渲染成功


http://www.kler.cn/a/442553.html

相关文章:

  • 从玩具到工业控制--51单片机的跨界传奇【2】
  • (三)html2canvas将HTML 转为图片并实现下载
  • 在 Webpack 中使用 预加载(Preloading) 技术可以通过动态导入(import())以及指定预加载的方式来进行优化
  • TCP-IP详解卷 TCP的超时与重传
  • 在Linux系统中无网络安装Nginx并配置负载均衡
  • CMD批处理命令入门(5)——ping,ipconfig,arp,start,shutdown,taskkill
  • STM32 水质水位检测项目 显示模块
  • MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
  • 从零用java实现 小红书 springboot vue uniapp (5)购物页聊天页
  • 【LeetCode】35.搜索插入位置
  • Python `*args` 和 `**kwargs`:优雅处理可变参数的终极指南 配合 frozenset 实现通用缓存装饰器
  • 跨站脚本攻击(XSS)可能存在的位置与实操演示
  • Redis应用—6.热key探测设计与实践
  • qlu数据结构测试
  • 解决/var/lib/docker(默认的 Docker 数据目录)占用较大,并且所在磁盘空间不足
  • 容器安全:风险与对策
  • MyBatis-Plus批量保存与多线程保存比较
  • Linux之条件变量,信号量,生产者消费者模型
  • 配置清晰,nignx http tcp 代理 已经websocket
  • 计算机网络——期末复习(1)背诵
  • AI芯片常见概念
  • MoonBit 核心编译器正式开源!
  • 2.16、添加响应式数据
  • php面对对象的基础知识
  • 车载通信架构 --- 一个以太网帧包含多个DoIP帧?
  • 手机银行模拟器,一款高仿真银行app的模拟器,可以修改姓名 卡号 余额 做转账记录 做流水