操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    個人名片:

    作者簡介:一名大二在校生,討厭編程

    ???個人主頁:小新愛學習.

    個人:

    ?系列專欄:?

    每日一句:努力的意義是給所愛之人一個美好的未來!

    文章目錄

    3. 首頁 3.0 創建 home 分支

    運行如下的命令,基于 分支在本地創建 home 子分支,用來開發和 home 首頁相關的功能:

    git checkout -b home
    

    3.1 配置網絡請求

    由于平臺的限制,小程序項目中不支持 axios,而且原生的 wx.() API 功能較為簡單,不支持攔截器等全局定制的功能。因此,建議在 uni-app 項目中使用 @/- 第三方包發起網絡數據請求。

    請參考 @/- 的官方文檔進行安裝、配置、使用

    官方文檔:@/-

    最終,在項目的 main.js 入口文件中,通過如下的方式進行配置:

    import { $http } from '@escook/request-miniprogram'
    uni.$http = $http
    // 配置請求根路徑
    $http.baseUrl = 'https://www.uinav.com'
    // 請求開始之前做一些事情
    $http.beforeRequest = function (options) {
      uni.showLoading({
        title: '數據加載中...',
      })
    }
    // 請求完成之后做一些事情
    $http.afterRequest = function () {
      uni.hideLoading()
    }
    

    3.2 輪播圖區域 3.2.1 請求輪播圖的數據

    實現步驟:

    1. 在 data 中定義輪播圖的數組

    2. 在 生命周期函數中調用獲取輪播圖數據的方法

    3. 在 中定義獲取輪播圖數據的方法

    示例代碼:

    export default {
      data() {
        return {
          // 1. 輪播圖的數據列表,默認為空數組
          swiperList: [],
        }
      },
      onLoad() {
        // 2. 在小程序頁面剛加載的時候,調用獲取輪播圖數據的方法
        this.getSwiperList()
      },
      methods: {
        // 3. 獲取輪播圖數據的方法
        async getSwiperList() {
          // 3.1 發起請求
          const { data: res } = await uni.$http.get('/api/public/v1/home/swiperdata')
          // 3.2 請求失敗
          if (res.meta.status !== 200) {
            return uni.showToast({
              title: '數據請求失敗!',
              duration: 1500,
              icon: 'none',
            })
          }
          // 3.3 請求成功,為 data 中的數據賦值
          this.swiperList = res.message
        },
      },
    }
    

    3.2.2 渲染輪播圖的 UI 結構 渲染 UI 結構:

    <template>
      <view>
        
        <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
          
          <swiper-item v-for="(item, i) in swiperList" :key="i">
            <view class="swiper-item">
              
              <image :src="item.image_src">image>
            view>
          swiper-item>
        swiper>
      view>
    template>
    

    美化 UI 結構:

    
    

    3.2.3 配置小程序分包

    分包可以減少小程序首次啟動時的加載時間

    為此,我們在項目中,把 相關的 4 個頁面放到主包中,其它頁面(例如:商品詳情頁、商品列表頁)放到分包中。在 uni-app 項目中,配置分包的步驟如下:

    在項目根目錄中,創建分包的根目錄,命名為

    在 pages.json 中,和 pages 節點平級的位置聲明 節點,用來定義分包相關的結構:

    {
      "pages": [
        {
          "path": "pages/home/home",
          "style": {}
        },
        {
          "path": "pages/cate/cate",
          "style": {}
        },
        {
          "path": "pages/cart/cart",
          "style": {}
        },
        {
          "path": "pages/my/my",
          "style": {}
        }
      ],
      "subPackages": [
        {
          "root": "subpkg",
          "pages": []
        }
      ]
    }
    

    在 目錄上鼠標右鍵,點擊 新建頁面 選項,并填寫頁面的相關信息:

    3.2.4 點擊輪播圖跳轉到商品詳情頁面

    將 節點內的 view 組件,改造為 導航組件,并動態綁定 url 屬性 的值。

    改造之前的 UI 結構:

    <swiper-item v-for="(item, i) in swiperList" :key="i">
      <view class="swiper-item">
        
        <image :src="item.image_src">image>
      view>
    swiper-item>
    

    改造之后的 UI 結構:

    <swiper-item v-for="(item, i) in swiperList" :key="i">
        <navigator class="swiper-item" :url="'/subpkg/goods_detail/goods_detail?goods_id=' + item.goods_id">
          
          <image :src="item.image_src">image>
        navigator>
    swiper-item>
    

    3.2.5 封裝 uni.$() 方法

    當數據請求失敗之后,經常需要調用 uni.({ /* 配置對象 */ }) 方法來提示用戶。此時小程序跳轉到淘客,可以在全局封裝一個 uni.$() 方法,來簡化 uni.() 方法的調用。具體的改造步驟如下:

    在 main.js 中小程序跳轉到淘客,為 uni 對象掛載自定義的 $() 方法:

    // 封裝的展示消息提示的方法
    uni.$showMsg = function (title = '數據加載失??!', duration = 1500) {
      uni.showToast({
        title,
        duration,
        icon: 'none',
      })
    }
    

    今后,在需要提示消息的時候,直接調用 uni.$() 方法即可:

    async getSwiperList() {
       const { data: res } = await uni.$http.get('/api/public/v1/home/swiperdata')
       if (res.meta.status !== 200) return uni.$showMsg()
       this.swiperList = res.message
    }
    

    3.3 分類導航區域 3.3.1 獲取分類導航的數據

    實現思路:

    定義 data 數據

    在 中調用獲取數據的方法

    在 中定義獲取數據的方法

    示例代碼如下:

    export default {
      data() {
        return {
          // 1. 分類導航的數據列表
          navList: [],
        }
      },
      onLoad() {
        // 2. 在 onLoad 中調用獲取數據的方法
        this.getNavList()
      },
      methods: {
        // 3. 在 methods 中定義獲取數據的方法
        async getNavList() {
          const { data: res } = await uni.$http.get('/api/public/v1/home/catitems')
          if (res.meta.status !== 200) return uni.$showMsg()
          this.navList = res.message
        },
      },
    }
    

    3.3.2 渲染分類導航的 UI 結構 定義如下的 UI 結構:

    
    <view class="nav-list">
       <view class="nav-item" v-for="(item, i) in navList" :key="i">
         <image :src="item.image_src" class="nav-img">image>
       view>
    view>
    

    通過如下的樣式美化頁面結構:

    .nav-list {
      display: flex;
      justify-content: space-around;
      margin: 15px 0;
      .nav-img {
        width: 128rpx;
        height: 140rpx;
      }
    }
    

    3.3.2 點擊第一項,切換到分類頁面 為 nav-item 綁定點擊事件處理函數:

    
    <view class="nav-list">
      <view class="nav-item" v-for="(item, i) in navList" :key="i" @click="navClickHandler(item)">
        <image :src="item.image_src" class="nav-img">image>
      view>
    view>
    

    定義 事件處理函數:

    // nav-item 項被點擊時候的事件處理函數
    navClickHandler(item) {
      // 判斷點擊的是哪個 nav
      if (item.name === '分類') {
        uni.switchTab({
          url: '/pages/cate/cate'
        })
      }
    }
    

    3.4 樓層區域 3.4.1 獲取樓層數據

    實現思路:

    定義 data 數據

    在 中調用獲取數據的方法

    在 中定義獲取數據的方法

    示例代碼如下:

    export default {
      data() {
        return {
          // 1. 樓層的數據列表
          floorList: [],
        }
      },
      onLoad() {
        // 2. 在 onLoad 中調用獲取樓層數據的方法
        this.getFloorList()
      },
      methods: {
        // 3. 定義獲取樓層列表數據的方法
        async getFloorList() {
          const { data: res } = await uni.$http.get('/api/public/v1/home/floordata')
          if (res.meta.status !== 200) return uni.$showMsg()
          this.floorList = res.message
        },
      },
    }
    

    3.4.2 渲染樓層的標題 定義如下的 UI 結構:

    
    <view class="floor-list">
      
      <view class="floor-item" v-for="(item, i) in floorList" :key="i">
        
        <image :src="item.floor_title.image_src" class="floor-title">image>
      view>
    view>
    

    美化樓層標題的樣式:

    .floor-title {
      height: 60rpx;
      width: 100%;
      display: flex;
    }
    

    3.4.3 渲染樓層里的圖片 定義樓層圖片區域的 UI 結構:

    
    <view class="floor-img-box">
      
      <view class="left-img-box">
        <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}" mode="widthFix">image>
      view>
      
      <view class="right-img-box">
        <view class="right-img-item" v-for="(item2, i2) in item.product_list" :key="i2" v-if="i2 !== 0">
          <image :src="item2.image_src" mode="widthFix" :style="{width: item2.image_width + 'rpx'}">image>
        view>
      view>
    view>
    

    美化樓層圖片區域的樣式:

    .right-img-box {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-around;
    }
    .floor-img-box {
      display: flex;
      padding-left: 10rpx;
    }
    

    3.4.4 點擊樓層圖片跳轉到商品列表頁 在 分包中,新建 頁面

    樓層數據請求成功之后,通過雙層 循環,處理 URL 地址:

    // 獲取樓層列表數據
    async getFloorList() {
      const { data: res } = await uni.$http.get('/api/public/v1/home/floordata')
      if (res.meta.status !== 200) return uni.$showMsg()
      // 通過雙層 forEach 循環,處理 URL 地址
      res.message.forEach(floor => {
        floor.product_list.forEach(prod => {
          prod.url = '/subpkg/goods_list/goods_list?' + prod.navigator_url.split('?')[1]
        })
      })
      this.floorList = res.message
    }
    

    把圖片外層的 view 組件,改造為 組件,并動態綁定 url 屬性 的值:

    <!-- 樓層圖片區域 -->
    <view class="floor-img-box">
      <!-- 左側大圖片的盒子 -->
      <navigator class="left-img-box" :url="item.product_list[0].url">
        <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}" mode="widthFix"></image>
      </navigator>
      <!-- 右側 4 個小圖片的盒子 -->
      <view class="right-img-box">
        <navigator class="right-img-item" v-for="(item2, i2) in item.product_list" :key="i2" v-if="i2 !== 0" :url="item2.url">
          <image :src="item2.image_src" mode="widthFix" :style="{width: item2.image_width + 'rpx'}"></image>
        </navigator>
      </view>
    </view>
    

    3.5 分支的合并與提交 將本地的 home 分支進行本地的 提交:

    git add .
    git commit -m "完成了 home 首頁的開發"
    

    將本地的 home 分支推送到遠程倉庫進行保存:

    git push -u origin home
    

    將本地的 home 分支合并到本地的 分支:

    git checkout master
    git merge home
    

    刪除本地的 home 分支:

    git branch -d home
    

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有