欢迎光临散文网 会员登陆 & 注册

【go+uni实战】旧厂街菜市场(自提电商小程序)--- 前端基础结构和首页书写

2023-02-20 22:55 作者:___菜菜鸡___  | 我要投稿

前端结构和首页布局构建

1.页面路由划分

需求分析:小程序门户至少需要三个页面,首页显示出售商品,一个用户信息页面,一个购物车页面。
需求实现:home、my、car

进入pages 文件夹下,对上述页面进行拆分。

pages >
 car >
  car.vue
 home >
  home.vue
 my   >
  my.vue

参考文档配置pages.json

{
  "pages": [{
  "path": "pages/home/home",
  "style": {
   "navigationBarTitleText": "强哥菜市场"
  }
 },
 {
  "path": "pages/car/car",
  "style": {
   "navigationBarTitleText": "购物车"
  }
 },
 {
  "path": "pages/my/my",
  "style": {
   "navigationBarTitleText": "个人中心"
  }
 }
 ],
}

重新编译运行,查看页面Title是否切换到 "强哥菜市场"

2.创建tabBar跳转页面

需求同上,需要实现3个按钮进行页面切换。使用tabBar进行控制。
字段分析:
字段名字段信息color默认颜色selectedColor选中颜色list按钮列表pagePath跳转地址text按钮文本iconPath默认图标地址selectedIconPath选中图标地址

./pages.json

{
  "tabBar": {
  "color": "#8e8e8e", // 默认颜色
  "selectedColor": "#1296db",// 选中颜色
  "list": [
   {
    "pagePath": "pages/home/home",
    "text": "主页",
    "iconPath": "static/home.png",
    "selectedIconPath": "static/select_home.png"
   },
   {
    "pagePath": "pages/car/car",
    "text": "购物车",
    "iconPath": "static/home.png",
    "selectedIconPath": "static/select_home.png"
   },
   {
    "pagePath": "pages/my/my",
    "text": "我的",
    "iconPath": "static/home.png",
    "selectedIconPath": "static/select_home.png"
   }
  ]
 }
}

重新编译运行,查看跳转按钮是否正常

3.首页布局构建

首页布局构建主要知识点学习:块元素样式控制、组件库快速使用根据需求进行调整。
🐻-学习组件:card 卡片 section 标题栏 grid 宫格
🐻-学习Vue3 语法糖 setup
./pages/home/home.vue

首要调整

<script setup>

</script>

<style lang="scss">

</style>

3.1 轮播图展示区

需求:轮播图为首页顶部,且为了美观,不能完全铺满。轮播图替换有动画效果。
<view class="home">
    <view class="uni-margin-wrap">
      <swiper class="swiper" circular :indicator-dots="swiperOption.indicatorDots" :autoplay="swiperOption.autoplay" :interval="swiperOption.interval"
        :duration="swiperOption.duration">
        <swiper-item>
          <view class="swiper-item uni-bg-red">A</view>
        </swiper-item>
        <swiper-item>
          <view class="swiper-item uni-bg-green">B</view>
        </swiper-item>
        <swiper-item>
          <view class="swiper-item uni-bg-blue">C</view>
        </swiper-item>
      </swiper>
    </view>
</view>

<script setup>
import { reactive } from "vue";
 const swiperOption = reactive({
  indicatorDots:false, // 不显示指示点
  autoplay:true,   // 自动播放
  interval:2000,   // 自动切换时间
  duration:500,   // 动画时长
 })
</script>

<style lang="scss">
.uni-margin-wrap{
  padding: 8upx;
  .swiper{
   border-radius: 8upx; // 圆角边框
   overflow: hidden;  // 移除隐藏
   .swiper-item{ // 完全填充块
    width: 100%; 
    height: 100%;
   }
   .uni-bg-red{ // 背景色,方便调试
    background: red;
   }
   .uni-bg-green{
    background: green; 
   }
   .uni-bg-blue{
    background: blue; 
   }
  }
 }
</style>

3.2 商品分类区

4个商品大分类,位于轮播图下方。
<view class="fish-grid">
  <uni-grid :column="4" :showBorder="false">
    <uni-grid-item>
      <view class="grid-box">鱼</view>
    </uni-grid-item>
    <uni-grid-item>
      <view class="grid-box">肉</view>
    </uni-grid-item>
    <uni-grid-item>
      <view class="grid-box">蔬</view>
    </uni-grid-item>
    <uni-grid-item>
      <view class="grid-box">蛋</view>
    </uni-grid-item>
  </uni-grid>
</view>

<style lang="scss">
  .fish-grid{
    margin-top: 12upx;
    .grid-box{
      display: flex;
      width: 100%;
      height: 100%;
      align-items: center;
      justify-content: center;
   }
 }
</style>

3.3 商品简介列表区

🐻-主要学习flex布局使用与控制。
<uni-section title="为你推荐" type="line" padding="">
  <view class="fish-card">
    <view class="fish-card-left">

    </view>
    <view class="fish-card-right">
      <view class="top">
        <text class="title">强哥鱼档</text>
        <text class="integral">5.0</text>
      </view>
      <view class="middle">
        <view class="">
          <text>最低销价20$</text>
        </view>
        <view class="">
          <text>月售600</text>
          <text>人均20¥</text>
        </view>
      </view>
      <view class="bottom">
        <uni-tag text="内有躺椅" type="warning" :inverted="true"></uni-tag>
      </view>
    </view>
  </view>
</uni-section>

<style lang="scss">
 .fish-card{
  display: flex; // 弹性布局,主布局方式
  gap: 20upx;
  height: 240upx;
  padding: 20upx;
  box-sizing: border-box;
  border: 1px solid #ccc;
  border-radius: 8upx;
  &-left{   // 块左侧划分 图片展示预留位置
   width: 200upx;
   height: 200upx;
   background: red;
   border-radius: 8upx;
  }
  &-right{  // 块右侧划分 -上中下三层划分
   flex:1;
   .top{  // 上侧商品标题 和 评分
    .title{
     font-weight: 600;
    }
    .integral{
     color: #8e8e8e;
     font-size: 12px;
     margin-left: 20upx;
    }
   }
   .middle{ // 中间 售价 销售量 范围价展示
    margin-top: 30upx;
    display: flex;
    justify-content: space-between;
    color: #8e8e8e;
    font-size: 12px;
    text+text{
     margin-left: 20upx;
    }
   }
   .bottom{ // 底栏 商品Tag块
    margin-top: 32upx;
   }
  }
 }

</style>

总结

本节课主要学习知识点:
组件布局:tabBar |pages.json配置|swiper 基础轮播图|Grid 宫格 section 标题栏
Vue3:setup
样式布局:scss 、 flex 布局控制

相关阅读

vue3

vue3新语法糖——setup script - 掘金 (juejin.cn)

scss

Sass教程 Sass中文文档 | Sass中文网

Uni-app

pages.json页面路由

uni-card 卡片组件

uni-section 标题栏

Github

piexlmax/fish: 旧厂街卖鱼系统 (github.com)


【go+uni实战】旧厂街菜市场(自提电商小程序)--- 前端基础结构和首页书写的评论 (共 条)

分享到微博请遵守国家法律