精华内容
下载资源
问答
  • 产品分类小图标
    千次阅读
    2020-10-26 09:45:49

    H5 产品的分类和简介

    一、电脑端(pc 端 react 全栈项目)

    web 应用(基于电脑浏览器的前端项目)

    二、手机端(移动端)

    1.小程序

    平台分类:微信小程序(张小龙) 支付宝小程序 头条小程序 百度快应用 QQ 小程序

    特性

    1. 由于硬件空间的限制 导致只能做一些业务逻辑简单
    2. 针对特定需求低频应用,因为进入某个小程序流程不方便
      (进入微信的猫眼电影的小程序需要 5 步)
    3. 性能要求不高的

    缺点
    因为每个开发平台 语言相互独立 导致开发一款适配到不同平台的小程序变得麻烦

    目前现状:
    只要使用 uni-app/mpVue/Weby/Taro 框架开发一套小程序代码,由这个框架就可以多端适配到不同的平台

    • uni-app(阿里团队)
    • mpVue(美团开源)
    • Wepy(腾讯)
    • Taro 是京东工作室开发的一个基于 react 语法的小程序框架

    2.原生 App(手机桌面上的京东 斗鱼 微信)

    概念
    基于智能手机本地操作系统(ios android 系统) 开发的桌面应用软件
    表现形式:直接手机桌面点击图标 进入 App 内部 然后实现用户交互

    优点

    1. 基于操作系统,得到的性能支持较高,所以能实现交互比较复杂的需求,
      也能实现成本较高运算,提供较高的用户体验
    2. 轻松访问手机各种设备(调用摄像头 麦克风 键盘 网卡设备)

    缺点

    1. 开发成本较高,需要适配不同的平台和版本
    2. 开发语言 c c++ java 等系统语言
    3. 开发的项目迭代流程麻烦,项目的每次迭代更新都需要让对应的平台市场审核,审核期较长,每次更新完都需要客户下载最新客户端
    4. 客户端安装的软件会在操作系统中产生数据垃圾,这些垃圾针对android 来说有些很难清理

    3.webApp(基于手机浏览器开发的项目:QQ 音乐项目)

    概念:基于手机浏览器的 web 应用,借助手机网络通信
    目前采用 H5 页面开发模式,

    使用的表象是:打开手机的浏览器,输入 url 地址就能访问,点击手机浏览器内置的图标链接

    优点

    1. 由于基于浏览器,实现跨平台(不管安卓还是 ios 手机都能运行浏览器)
    2. 不需要安装,节约手机空间
    3. 体量轻,开发成本较低,不像原生 app 要适配不同手机平台和型号
    4. 项目开发周期较快,不需要平台上传审核

    缺点

    1. 安全问题
    2. 页面跳转费劲 跳转不稳定 网络受限 信号有可能较差
    3. 性能受限 不会实现一些功能复杂 交互性能要求高的需求

    4.混合 App

    概念:一个 app 软件某些功能是使用 c 或者是 java 开发的,这样的 app会内置浏览器引擎,能将部分交互不是特别复杂的功能使用 h5 的开发模式开发

    特点

    1. 相比原生 App,在实现相同功能的前提下,减少了 app 下载体积
    2. 相比 webApp 来说,可以实现功能复杂的或者性能要求更高的需求,解决 webApp 页面跳转问题
    更多相关内容
  • 各位商家大家好,本次产品新功能目前已全量发布,微信程序或零售程序更新至最新版本即可使用。No.1产品背景每一个品牌、每一个店铺都有自己的品牌主题色,品牌色非常有助于消费者记忆和辨识品牌。对应的,有赞...
    526cc12598bd7f6dae69428bcdcbc4e8.gif

    各位商家大家好,本次产品新功能目前已全量发布,微信小程序或零售小程序更新至最新版本即可使用。

    No.1

    产品背景

    每一个品牌、每一个店铺都有自己的品牌主题色,品牌色非常有助于消费者记忆和辨识品牌。对应的,有赞提供了全店风格的解决方案,商家可以一键设定自己的品牌主题色。同时在店铺装修中,底部导航曝光率非常高,但目前底部导航并没有应用该色彩,需要同步应用。同时,对于部分全店风格无法满足的商家,对应的底部导航也需要开放自定义颜色的能力。
    行业案例(取自部分主流电商与本地生活 App):

    8daf3b442f45ef08b52cc2602643e6df.png

    No.2

    功能简介

    适用店铺:各店铺类型均适用,需要开通微信小程序。

    微信小程序底部导航图标新能力:
    1. 支持设置应用全店风格颜色。
    2. 支持自定义颜色,可设置选中颜色与未选中颜色。
    3. 支持与自定义图标搭配使用(自定义图标需修改好对应颜色)。

    No.3

    应用场景

    日食记是一个以暗金色为主题色的店铺,商家希望在消费者进店的时候,整个店铺给消费者传递暗金色的品牌色调。于是团队将店铺主页设置为暗金色的同时,将店铺导航图标也设置成了暗金色,提升了整个店铺的品牌调性。

    No.4

    操作详解

    使用路径:店铺后台-店铺-微信-小程序导航,点击即可操作。

    第一步:进入底部导航配置区,选择模式:
    (1)自定义模式:需要手动设置选择色彩与未选中色彩,满足更多品牌色调需求。

    841e0cd8ef36724f5f8f8473acbd8bc1.png

    (2)全店风格模式:自动使用全店风格主色,无需额外配置。

    d8d7e801a70c92fefbcd8e5cf4598589.png

    第二步:保存修改,如果小程序版本过低,保存时会出现小程序版本要求提示,可前往升级至最新版本小程序。

    021b1506bbd6d4ea128cdf97e78fe3ab.png ad3f69bb16cf8565cbd8eb2bb3f97549.png c383c7f8b118c5309a35226bfceecc97.png c5e10334e0e089908fc5f94bd15c9f5a.png
    展开全文
  • 颜色分类leetcode Web App Builder 自定义部件 我需要一些咖啡因才能工作:) Adrián Pérez Beneito Web App builder 自定义部件列表 条形图雪松 :bar_chart: 查看以及如何使用 ArcGIS Geoservices 创建图表。 ...
  • Q书桌是软件管家的全新升级版本,更名为Q书桌,是一款桌面客户端产品,帮助您集中管理电脑上的各项程序,使您能够方便、快捷地找到需要运行的程序或文件。Q书桌不限于软件的管理,您还可以将照片、文档、...
  • 黑马优购程序之分类模块

    千次阅读 2020-03-09 11:33:20
    } ] } ] } 此处message中为三套循环,第一层为左侧分类列表,第二层为分类类,第三层为详细产品。 1.2.2 构建网络请求,处理数据 在category/index.js中,声明所需数据: /** * 页面的初始数据 */ data: { // ...

    1.1 目标效果图

    首先,看下本节要实现的效果图:
    在这里插入图片描述
    由图分析:

    • 上方是一个搜索
    • 左侧是分类滑动scroll-view
    • 右侧是类别详情内容,也是一个scroll-view

    1.2 网络请求和数据解析

    1.2.1 数据解析

    该接口数据返回格式为:

    {
        "message":[
            {
                "cat_id":1,
                "cat_name":"大家电",
                "cat_pid":0,
                "cat_level":0,
                "cat_deleted":false,
                "cat_icon":"/full/none.jpg",
                "children":[
                    {
                        "cat_id":3,
                        "cat_name":"电视",
                        "cat_pid":1,
                        "cat_level":1,
                        "cat_deleted":false,
                        "cat_icon":"/full/none.jpg",
                        "children":[
                            {
                                "cat_id":5,
                                "cat_name":"曲面电视",
                                "cat_pid":3,
                                "cat_level":2,
                                "cat_deleted":false,
                                "cat_icon":"https://api-hmugo-web.itheima.net/full/2fb113b32f7a2b161f5ee4096c319afedc3fd5a1.jpg"
                            },
                            {
                                "cat_id":6,
                                "cat_name":"海信",
                                "cat_pid":3,
                                "cat_level":2,
                                "cat_deleted":false,
                                "cat_icon":"https://api-hmugo-web.itheima.net/full/5e38cf9e6e7c46a17fe1c597a883ae627977b296.jpg"
                            }
                        ]
                    }
                ]
            }
        ]
    }
    

    此处message中为三套循环,第一层为左侧分类列表,第二层为分类中小类,第三层为详细产品。

    1.2.2 构建网络请求,处理数据

    category/index.js中,声明所需数据:

      /**
       * 页面的初始数据
       */
      data: {
    
        // 左侧菜单数组
        leftMenuList: [],
        // 右侧商品数组
        rightContent: []
      },
      // 定义变量接受server返回整体数据
      Cates: [],
    

    引入之前设计的request

    import { request } from "../../request/index.js"
    

    发送网络请求并处理数据:

    /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.getCates();
      },
    
      /* 
        加载分类数据
      */
      getCates() {
        request({
          url: "https://api-hmugo-web.itheima.net/api/public/v1/categories"
        }).then(result => {
          console.log(result)
          this.Cates = result.data.message;
          // 构造左侧大菜单数据
          let leftMenuList = this.Cates.map(v => v.cat_name);
          // 构造右侧商品数据
          let rightContent = this.Cates[0].children;
          this.setData({
            leftMenuList,
            rightContent
          })
        })
      },
    

    1.3 绘制UI

    1.3.1 引入自定义组件

    分类页面头部是一个搜索框,这个组件在上一节中已经做了处理,那在这里直接引用即可。

    category/index.json中,引入组件:

    {
      "usingComponents": {
        "SearchInput":"../../components/SearchInput/SearchInput"
      },
      "navigationBarTitleText": "商品分类"
    }
    

    category/index.wxml中,使用组件:

    <view class="cates">
        <SearchInput></SearchInput>
    </view>
    

    效果如下:
    在这里插入图片描述

    1.3.2 页面左右分割

    首先,将页面左右分开布局,
    category/index.wxml中,编写布局

        <view class="cates_container">
            <!-- 左侧菜单 -->
            <scroll-view class="left_menu" scroll-y>
            </scroll-view>
            <!-- 右侧商品内容 -->
            <scroll-view class="right_content" scroll-y>
                
            </scroll-view>
        </view>
    

    category/index.less文件中,编写样式文件:

    page {
        height: 100%;
    }
    
    .cates {
        height: 100%;
    
        .cates_container {
            /* 在less中使用calc时要注意 */
            height : ~'calc(100vh - 90rpx)';
            display: flex;
    
            .left_menu {
                flex: 2;
                background-color: hotpink;
            }
    
            .right_content {
                flex: 5;
                background-color: gold;
                
            }
        }
    }
    

    效果如下:
    在这里插入图片描述

    1.3.3 左侧菜单列表

    左侧菜单,需要对leftMenuList进行循环,并先完成简单样式。
    category/index.wxml中,编写菜单遍历代码:

    <!-- 左侧菜单 -->
    <scroll-view class="left_menu" scroll-y>
        <view class="menu_item" wx:for="{{leftMenuList}}" wx:key="*this">{{item}}</view>
    </scroll-view>
    

    category/index.less文件中,编写样式代码:

    .cates {
        height: 100%;
    
        .cates_container {
            /* 在less中使用calc时要注意 */
            height : ~'calc(100vh - 90rpx)';
            display: flex;
    
            .left_menu {
                flex: 2;
    
                .menu_item {
                    height         : 80rpx;
                    justify-content: center;
                    align-items    : center;
                    font-size      : 30rpx;
                    display        : flex;
                }
            }
        }
    
    }
    

    效果如下:
    在这里插入图片描述

    1.3.4 右侧商品子类别

    这里,主要两个循环,第一层为子分类标题,第二层为子分类列表内容。

    category/index.wxml中,编写UI,代码如下:

    <!-- 右侧商品内容 -->
    <scroll-view class="right_content" scroll-y>
        <view class="goods_group" wx:for="{{rightContent}}" wx:for-index="cate_index" wx:key="cat_id" wx:for-item="cate_item">
            <!-- 商品标题 -->
            <view class="goods_title">
                <text class="delimiter">/</text>
                <text class="title">{{cate_item.cat_name}}</text>
                <text class="delimiter">/</text>
            </view>
            <!-- 商品分类 -->
            <view class="goods_list">
                <navigator wx:for="{{cate_item.children}}" wx:for-item="good_item" wx:for-index="good_index" wx:key="cat_id">
                    <image mode="widthFix" src="{{good_item.cat_icon}}" />
                    <view class="goods_name">{{good_item.cat_name}}</view>
                </navigator>
            </view>
        </view>
    </scroll-view>
    

    catrgory/index.less中编写样式,如下:

    .right_content {
         flex: 5;
         .goods_group {
             .goods_title {
                 height         : 80rpx;
                 display        : flex;
                 justify-content: center;
                 align-items    : center;
    
                 .delimiter {
                     color  : #ccc;
                     padding: 0 10rpx;
                 }
    
                 .title {}
             }
         }
    
         .goods_list {
             display  : flex;
             flex-wrap: wrap;
    
             navigator {
                 width     : 33.33%;
                 text-align: center;
    
                 image {
                     width: 50%;
                 }
    
                 .goods_name {
                     padding-bottom: 8rpx;
                 }
             }
         }
     }
    

    实现效果如下:
    在这里插入图片描述

    1.3 点击菜单切换商品内容

    接下来,需要实现,点击左侧菜单,出现选中样式,并且,右侧商品内容同步更新。

    1.3.1 选中菜单添加active样式

    首先需要在点击左侧菜单时,样式更新。

    categry/index.less中,编写选中样式文件:

    .left_menu {
        flex: 2;
    
        .menu_item {
            height         : 80rpx;
            justify-content: center;
            align-items    : center;
            font-size      : 30rpx;
            display        : flex;
        }
    
        .active{
            color: var(--themeColor);
            border-left: 5rpx solid currentColor;
        }
    }
    

    category/index.js中,记录当前索引值:

      data: {
    
        // 左侧菜单数组
        leftMenuList: [],
        // 右侧商品数组
        rightContent: [],
        // 选择菜单索引
        currentIndex: 0
      },
    

    category/index.wxml中,判断索引,添加样式:

    <!-- 左侧菜单 -->
     <scroll-view class="left_menu" scroll-y>
         <view class="menu_item {{currentIndex===index?'active':''}}" wx:for="{{leftMenuList}}" wx:key="*this">{{item}}</view>
     </scroll-view>
    

    此时,仅有第一个是选中样式,当点击菜单是没有效果的,因为还没设置点击事件,接下来添加一下吧。

    category/index.wxml中,给左侧菜单添加点击事件,并把当前索引传入。

    <!-- 左侧菜单 -->
    <scroll-view class="left_menu" scroll-y>
        <view class="menu_item {{currentIndex===index?'active':''}}" wx:for="{{leftMenuList}}" wx:key="*this" bind:tap="handItemTab" data-index="{{index}}">{{item}}</view>
    </scroll-view>
    

    category/index.js中,添加处理函数,并更新currentIndex

    // 菜单点击事件
    handItemTab(e){
        console.log(e);
        // 获取索引
        const {index} = e.currentTarget.dataset;
        this.setData({
          currentIndex: index
        })
    },
    

    这样,即完成菜单点击效果的切换。

    1.3.2 动态切换右侧商品内容

    根据点击菜单,更新右侧商品内容,只需要通过index获取商品数据即可

    // 菜单点击事件
    handItemTab(e){
       console.log(e);
       // 获取索引
       const {index} = e.currentTarget.dataset;
       // 更新右侧商品数据
       let rightContent = this.Cates[index].children;
       this.setData({
         currentIndex: index,
         rightContent
       })
    },
    

    如上,就完成了右侧内容的动态切换。

    1.4 缓存

    以商品分类接口为例,其返回数据较多,在网络不好的情况较慢,无论是在用户体验还是技术角度都是不好的,实际项目中,需要对这种变化频率不高、数据量较大的接口增加缓存。

    实现方案如下:

    • 检查本地有无缓存,如果没有,网络请求数据,并缓存到本地
    • 如果有,检查是否过期。如过期,网络请求,并缓存到本地
    • 如果未过期,直接使用数据即可

    1.4.1 更新UI代码抽取

    将更新UI代码操作,抽取独立方法,如下:

    /* 更新UI */
    updateUI() {
      // 构造左侧大菜单数据
      let leftMenuList = this.Cates.map(v => v.cat_name);
      // 构造右侧商品数据
      let rightContent = this.Cates[0].children;
      this.setData({
        leftMenuList,
        rightContent
      })
    },
    

    1.4.2 本地存储数据

    在网络请求后,调用小程序API存储数据:

    /* 
        加载分类数据
      */
    getCates(){
      request({
        url: "https://api-hmugo-web.itheima.net/api/public/v1/categories"
      }).then(result => {
        console.log(result)
        this.Cates = result.data.message;
        // 本地存储数据
        wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
        this.updateUI();
      })
    },
    

    1.4.2 缓存设计实现

    在页面onLoad方法中,根据思路,假如本地缓存判断相关代码,详细如下:

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
      // 获取本地存储数据
      const localCates = wx.getStorageSync("cates");
      if (!localCates) {
        // 本地没有,网络请求
        this.getCates();
      } else {
        // 本地有数据,判断是否过期 此处为60秒
        if (Date.now() - localCates.time > 1000 * 10 * 6) {
          // 数据过期
          this.getCates();
        } else {
          // 本地数据有效
          this.Cates = localCates.data;
          this.updateUI();
        }
      }
    },
    

    如上,完成后可自行测试,绝对生效了~

    1.5 切换菜单,右侧列表回顶部

    现在分类页面还存在一个问题,当选中一个菜单,右边内容向下滚动后,再次点菜单按钮,右侧内容显示没有回顶部,效果如下:
    在这里插入图片描述
    接下来,修复一下这个问题,其实也很简单,scroll-view提供了一个属性scrollTop,在切换左侧菜单的时候,将其属性设置为0即可。

    1.5.1 声明scrollToTop属性

    category/index.js中的Page data中,声明属性,如下:

    // 右侧内容的滚动条
    scrollToTop: 0
    

    1.5.2 处理菜单点击事件

    在点击事件中,对当前点击菜单进行判断:

     // 菜单点击事件
     handItemTab(e) {
       console.log(e);
       // 获取索引
       const { index } = e.currentTarget.dataset;
       // 如果重复点击标签,不做操作
       if(index==this.data.currentIndex){
         return;
       }
       // 更新右侧商品数据
       let rightContent = this.Cates[index].children;
       this.setData({
         currentIndex: index,
         rightContent,
         scrollToTop: 0
       })
     },
    

    1.5.3 添加scrollTop属性

    category/index.wxml中给scroll-view添加属性

    <!-- 右侧商品内容 -->
    <scroll-view class="right_content" scroll-y scroll-top="{{scrollToTop}}">
    ....
    </scroll-view>
    

    1.6 小结

    本节初步完成了分类页面的展示,关键点如下:

    • 左菜单右内容UI布局
    • scroll-view使用及注意事项
    • 缓存处理
    展开全文
  • 上文中,使用程序提供的原生API做的网络请求,当依赖请求非常多时,就会造成函数嵌套回调混乱,so,在这先将请求封装为 promise 形式。 1.4.1 新建请求 index.js 文件 在 request 文件夹中,新建 index.js ...

    1.1 效果图

    首页实现效果图如下,并过了模块拆分,拆分为:

    • 头部搜索
    • 轮播图
    • 导航
    • 楼层
      在这里插入图片描述

    1.2 搜索框

    搜索框在项目内好几处都会使用到,因此,将其封装为组件。

    1.2.1 新建组件

    components目录下新建SearchInput文件夹,并通过小程序开发工具,新建组件SearchInput

    1.2.2 编写组件

    SearchInput.wxml中编写页面,此处点击跳转搜索页面,代码如下:

    <!--components/SearchInput/SearchInput.wxml-->
    <view class="search_input">
        <navigator url="/pages/search/index" open-type="navigate">
            搜索
        </navigator>
    </view>
    

    此处,使用less编写样式,其会自动编译为wxss
    新建SearchInput.less,根据UI效果,样式代码如下:

    .search_input{
        height: 90rpx;
        padding: 15rpx;
        background-color: var(--themeColor);
        navigator{
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: #ffffff;
            border-radius: 15rpx;
            color: #666;
        }
    }
    

    1.2.3 引用组件

    index/index.json中,配置引入组件,代码如下:

    {
      "usingComponents": {
        "SearchInput":"../../components/SearchInput/SearchInput"
      },
      "navigationBarTitleText": "优购首页"
    }
    

    1.2.4 使用组件

    index/index.wxml中使用声明的组件,代码如下:

    <!--index.wxml-->
    <SearchInput></SearchInput>
    

    1.2.5 效果预览

    在这里插入图片描述

    1.3 轮播图

    轮播图需要使用到小程序提供的swiperswiper-item组件。

    1.3.1 获取网络数据

    在首页启动的时候就应该获取轮播图数据,so,在index/index.jsPage对象的onLoad方法中请求数据接口,并把轮播图list赋值给声明的swiperList,代码如下:

    /**
       * 页面的初始数据
       */
      data: {
        swiperList: []
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        var reqTask = wx.request({
          url: 'https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata',
          success: (result) => {
            console.log(result)
            this.setData({
              swiperList: result.data.message
            })
          }
        });
      },
    

    此时,报错如下:在这里插入图片描述
    稳住,不要慌,点我查看一站式解决方案

    1.3.2 编写UI

    index/index.wxml中编写轮播图,代码如下:

    <!-- 轮播图开始 -->
    <view class="index_swiper">
        <swiper indicator-dots="{{true}}" autoplay="true" circular="{{true}}" interval="2000">
            <swiper-item wx:for="{{ swiperList }}" wx:key="goods_id">
                <navigator>
                    <image src="{{item.image_src}}" />
                </navigator>
            </swiper-item>
        </swiper>
    </view>
    <!-- 轮播图结束 -->
    

    效果如下:
    在这里插入图片描述
    很明显,太丑陋了,完全不符合预期,那么接着来美化下吧。

    首先为什么会这么显示呢,原因有二:

    • swiper存在默认的宽度和高度,分别为100%和150px
    • image存在默认的宽度和高度,分别为320px和240px

    知道了原因,那接下来就开始优化了:

    • 让图片的高度自适应,宽度为100%
    • image标签设置mode属性为widthFix,让图片的标签宽高和图片标签的内容宽高都等比例发生变化
    • 确认原图宽高,此处为750 * 340
    • swiper标签的高度和图片的高度一样

    修改后的index/index.wxml如下:

    <!-- 轮播图开始 -->
    <view class="index_swiper">
    <!-- 
        1. swiper标签存在默认的宽度和高度,分别为100%*150px
        2. image标签存在默认的宽度和高度,分别为320px*240px
        3. 图片标签
            mode属性
                widthFix 宽度不变,高度自动变化,保持原图宽高比不变
        4. 设计图片和轮播图
            a. 先确认原图宽高 720 * 340
            b. 让图片宽度100%,高度自适应
            c. 让swiper标签高度和图片高度一致
     -->
        <swiper indicator-dots="{{true}}" autoplay="true" circular="{{true}}" interval="2000">
            <swiper-item wx:for="{{ swiperList }}" wx:key="goods_id">
                <navigator>
                    <image mode="widthFix" src="{{item.image_src}}" />
                </navigator>
            </swiper-item>
        </swiper>
    </view>
    <!-- 轮播图结束 -->
    

    修改后的index/index.less,内容如下:

    .index_swiper{
        swiper{
            height: 340rpx;
            image{
                width: 100%;
            }
        }
    }
    

    最终效果如图:
    在这里插入图片描述
    有木有爽歪了~

    1.4 Promise请求

    上文中,使用小程序提供的原生API做的网络请求,当依赖请求非常多时,就会造成函数嵌套回调混乱,so,在这先将请求封装为promise形式。

    1.4.1 新建请求index.js文件

    request文件夹中,新建index.js,代码如下:

    export const request=(params)=>{
        return new Promise((resolve,reject)=>{
            wx.request({
                ...params,
                success: (result)=>{
                    resolve(result);
                },
                fail: (error)=>{
                    reject(error);
                }
            });
        })
    }
    

    1.4.2 导入request

    index/index.js中导入上文创建的request对象,代码如下:

    import { request } from "../../request/index.js"
    

    1.4.3 替换请求

      onLoad: function (options) {
        request({
          url: 'https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata'
        }).then(result => {
          console.log(result)
          this.setData({
            swiperList: result.data.message
          })
        })
      },
    

    是不是清爽多了,保存一下,看看效果吧~

    1.5 分类导航

    1.5.1 声明分类导航数组

    index/index.js中,声明分类数组,如下:

      data: {
        // 轮播图数组
        swiperList: [],
        // 分类导航数组
        cateList:[]
      },
    

    1.5.2 构建网络请求

    index/index.js中,添加getCateList函数,并在onLoad方法中引用。

       // 获取分类导航数据
       getCateList() {
        request({
          url: 'https://api-hmugo-web.itheima.net/api/public/v1/home/catitems'
        }).then(result => {
          console.log(result)
          this.setData({
            cateList: result.data.message
          })
        })
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.getSwiperList();
        this.getCateList();
      },
    

    1.5.3 编写UI

    index/index.wxml中,编写分类导航,代码如下:

    <!-- 分类导航开始 -->
    <view class="index_cate">
        <navigator wx:for="{{cateList}}" wx:key="name">
            <image src="{{item.image_src}}" mode="widthFix" />
        </navigator>
    </view>
    <!-- 分类导航结束 -->
    

    index/index.less中,添加样式文件,如下:

    .index_cate{
        display: flex;
        navigator{
            padding: 20rpx;
            flex: 1;
            image{
                width: 100%;
            }
        }
    }
    

    1.5.4 效果图

    最终效果如下:
    在这里插入图片描述

    1.6 楼层

    1.6.1 声明楼层数组

    index/index.js中,声明分类数组,如下:

      data: {
        // 轮播图数组
        swiperList: [],
        // 分类导航数组
        cateList:[],
        // 楼层数组
        floorList:[]
      },
    

    1.6.2 构建网络请求

    index/index.js中,添加getFloorList函数,并在onLoad方法中引用。

       // 获取楼层数据
       getFloorList() {
        request({
          url: 'https://api-hmugo-web.itheima.net/api/public/v1/home/floordata'
        }).then(result => {
          console.log(result)
          this.setData({
            floorList: result.data.message
          })
        })
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.getSwiperList();
        this.getCateList();
        this.getFloorList();
      },
    

    1.6.3 编写UI

    index/index.wxml中,编写楼层布局,此处牵扯两个for循环,外层为楼层标题,内层为产品列表,详见接口数据。

    <view class="index_floor">
        <view class="floor_group" wx:for="{{ floorList }}" wx:key="floor_title" wx:for-item="floor_item" wx:for-index="floor_index">
            <!-- 楼层标题 -->
            <view class="floor_title">
                <image mode="widthFix" src="{{floor_item.floor_title.image_src}}" />
            </view>
            <!-- 楼层列表 -->
            <view class="floor_list">
                <navigator class="floor_list" wx:for="{{floor_item.product_list}}" wx:for-item="product" wx:for-index="product_index" wx:key="name">
                    <image src="{{product.image_src}}" mode="{{product_index==0?'widthFix':'scaleToFill'}}" />
                </navigator>
            </view>
        </view>
    </view>
    <!-- 楼层结束 -->
    

    index/index.less文件中,编写样式,代码如下:

    .index_floor {
    
        .floor_group {
            .floor_title {
                padding: 10rpx 0;
    
                image {
                    width: 100%;
                }
            }
    
            .floor_list {
                // 清除浮动
                overflow: hidden;
    
                navigator {
                    float: left;
                    width: 33.33%;
    
                    /* 后四个超链接 */
                    &:nth-last-child(-n+4) {
                        /* 原图的宽高 232 *386 */
                        // 232 / 386 = 33.33vw / height
                        // 第一张图片的高度 height:33.33vw * 386 /  232
                        // 后四张图片高度为 33.33vw * 386 / 232 /2;
                        height            : 33.33vw * 386 / 232 /2;
    
                        border-left: 10rpx solid #fff;
                    }
    
                    /* 2 3 两个超链接 */
                    &:nth-child(2),
                    &:nth-child(3) {
                        border-bottom: 10rpx solid #fff;
                    }
    
                    image {
                        width : 100%;
                        height: 100%;
                    }
                }
            }
        }
    }
    

    1.6.3 效果图

    最终首页效果如下:
    在这里插入图片描述

    1.7 小结

    至此,首页模块基本搭建完成。需要注意的点如下:

    • swiperimage结合使用
    • 楼层布局的计算和排列
    • wx:for的使用
    展开全文
  • “纯天然”撰写制作的产品说明书~
  • 在弹出的“分类汇总”对话框中,在“分类字段”框中选择进行分类汇总的列标题,选择“产品名称”,来看看要进行分类汇总的表格数据,如图3所示。 2。 3.然后在数据区域选中任何一个单元格,单击“数据”---“分级...
  • zen cart产品分类及产品管理

    千次阅读 2011-05-07 20:02:00
    zen cart产品分类及产品管理,产品目录管理,产品分类管理,产品管理,产品属性
  • 基础组件:颜色、字体、按钮、单元格、图标、图片、布局、弹出框、内置样式; 表单组件:日历、复选框、级联选择、时间选择、输入框、数字键盘、密码输入框、选择器、单选按钮、评分、搜索、滑块、步进器、开关、...
  • Axure线形图标元件库1000+作品说明图标说明更新说明全部图标预览作品预览获取方法 作品说明 图标数量:共1000+个 文件大小:9.01MB 兼容软件:Axure RP 8/9 图标说明 单线图标,故名思义就是单一线条的图标,所有...
  • 区块链产品经理规范与总结

    千次阅读 2022-04-02 17:54:26
    产品职位晋升体系:首先从产品助理--产品专员--产品经理--高级产品经理--产品leader--最后到产品总监,甚至可能成为CEO。
  • 作为一名产品经理,如何才能快速地设计一款产品?一款优秀的产品原型工具必不可少。如何才能选择一款适合自己的原型工具呢?Benson特意整理了11款产品原型工具以供参考,并学习曲线,性价比,功能优缺点等方面进行了...
  • 后面我们将会分享原型图的标注,画开发看得懂的原型图、页面跳转关系图等,喜欢的伙伴可持续关注我们的公众号:产品刘 最后,分享个移动互联网数据安全报告,可以加微信:yw5201a1 领取。 此外我们的官方网站也...
  • 黑马程序员课程Vue实战项目_Element-ui——电商后台管理系统-商品管理(商品分类
  • 阿里云产品介绍

    万次阅读 2021-11-09 22:20:47
    文章目录一、阿里云四大件1、云服务器ECS2、云数据库RDS3、负载均衡SLB4、对象存储OSS5、其他的云计算产品1)内容分发网络CDN:2)专有网络 VPC:2)弹性伸缩:二、阿里云安全系列产品1、DDoS高防IP2、安骑士3、证书...
  • HTML商城导航栏和详细分类的制作

    千次阅读 2021-07-25 09:52:40
    } 设置每一个类别li的大小和文本居中对齐,移到li上背景颜色变白,li后面加上字体图标右箭头 .dropdown .dd ul li { position: relative; height: 31px; line-height: 31px;//文字居中对齐 margin-left: 2px;...
  • 三下五除二就基本将产品线框图给画完了,然后就屁颠屁颠地跑去和研发工程师过需求,讨论的时候会发现:不是这里有个问题,就是那里有个逻辑没想明白,整理整理返工,结果下一次又发现有一个流程没有考虑清楚,这样...
  • 本章主要讲解商城程序购物车界面和下单界面的实现。包含:购物车顶部菜单布局、购物车产品列表布局、下单页面底部菜单布局、下单页面其他界面的布局。 购物车首页底部菜单 本节主要讲解购物车页面底部菜单界面的...
  • 刘文智《产品经理深入浅出》培训课程笔记

    万次阅读 多人点赞 2018-08-07 16:37:31
    (一)产品经理与项目经理的区别 产品经理靠想:负责做争取的事,提出做这件事情的方法和方式,全程跟进并保证这件事情是按照预先构思的方法和方式在前进; 项目经理靠做:负责把事情做正确,尤其是在时间、成本、...
  • 你可以设计一个精美的小图标,但是在定义它的点触大小的时候,却可以做放大处理,但你千万不要设计一个傻大的图标,点触范围却比图标要小,这样会给用户带来明显的误操作挫败感。 13、标签页跟内容没有从属关系 ...
  • 目录前言项目概述项目背景建设目标建设内容需求概述业务流程总体架构用户角色功能权限功能需求首页分类购物车我的非功能需求性能需求数据埋点 前言 好多职场小白第一次做需求岗的时候,往往不知道该做哪些工作,其实...
  • 项目主要分为:主页、分类、购物车、消息、和“我的”模块。特点 采用 Kotlin 语言进行开发 采用 MVP + dagger 2 架构 组件化开发,减少模块间的耦合 采用 Retrofit + RxKotlin 进行网络请求 使用 ARouter ...
  • 产品上线流程

    千次阅读 2018-12-25 10:39:24
    上线流程 技术审核完毕 测试验收完毕 产品、运营验收完毕 确认buglist中,必须修改的bug已经清理 产品准备工作完毕 运营准备工作完毕 App Store和安卓应用市场,协调同步更新...C:产品分类(音乐、社交、金融) D:...
  • Producter:让产品从0到1

    千次阅读 2018-04-12 10:44:14
    本书从产品的设计、产品的实现、产品的迭代、产品的营销、产品的进阶等几个角度,全面讲解了产品设计的基本原则、设计的重要性、设计的感觉、实用的设计工具、简单的 iOS 开发、产品营销理念和文案基础、动画效果的...
  • 【去哪儿旅行】产品分析报告

    万次阅读 2019-09-10 16:06:30
    产品基本信息 产品名称 去哪儿旅行 产品版本 Android V8.9.25 体验环境 EMUI 9.0.1 体验时间 2019.9.3-9.7 体验者 东流 二.市场背景 1.行业背景: 数据显示,在线旅游APP的用户规模保持持续增长,...
  • OpenMV 从入手到跑TensorFlow Lite神经网络进行垃圾分类

    万次阅读 多人点赞 2021-06-20 16:29:24
    -----------文章较长,可通过右侧(或左侧)目录进行跳转阅读----------- OpenMV 从入手到跑TensorFlow Lite神经网络进行垃圾分类 一、了解OpenMV 4 plus的构成 1.OpenMV 4 plus 的特点 1.1 硬件资源 1.2 引脚图 2....
  • 微信程序开发的学习资料收集

    千次阅读 2022-06-28 15:12:42
    程序开发学习资料集合
  • 矢量图标设计讲解

    千次阅读 2018-12-21 11:41:13
    有可能您想起的是微信APP ,由两个白色气泡组成的启动图标,或者是我们每天使用的 APP 中的那些返回、关闭等系统图标,也可能是商场导视里的卫生间图标等。没错,图标的形式有很多种,它可以应用在很多场景中,并且...
  • TiPLM---产品全生命周期管理系统

    千次阅读 2019-08-26 16:27:22
    信息化时代,现代化大中型企业,迎来了数据统一化整合、产品全生命周期管理的重要机遇与挑战,信息化变革,对提升企业管理效率、提高产品制造质量具有举足轻重的意义。中车信息技术有限公司(原北京清软英泰信息技术...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,840
精华内容 7,536
热门标签
关键字:

产品分类小图标