微信小程序-仿盒馬鮮生

項目初覽

仿造盒馬鮮生,實現了部分功能。
html

盒馬鮮生是阿里巴巴對線下超市徹底重構的新零售業態,熱度十分git


項目功能

* 用戶信息註冊
* 首頁幾個輪播和界面交互
* 分類商品管理購買
* 購物車界面交互及其操做
* 我的信息界面複製代碼

小程序設計過程

小程序是一個易上手的東西, 對於新手來講,多看官方文檔,能夠初步作出比較完整的小程序,正是由於簡單上手,功能實現簡單,小程序是愈來愈火,商業價值也愈來愈大。github

1.項目工具和文檔

  1. 微信web開發者工具:微信小程序官網 這是個比較好用的編輯器,對於小程序編輯很方便。
  2. 開發文檔:微信小程序寶典祕籍 經過這個查找微信小程序的API,組件,框架等等。
  3. 圖標庫: Iconfont-阿里巴巴矢量圖標庫 這個能夠找到本身想要的幾乎全部的小圖標,十分方便。
  4. Easy Mork: easy-mock 用於後臺的模擬,獲得JSON數據;
  5. weui框架引入, 例如我的信息界面,用weui能夠很快很方便的作

2.項目開發

微信小程序開發和傳統的H5開發仍是有些不一樣的, 容易踩坑。
小程序是基於MVVM的的框架,合理利用數據綁定實現界面的更新是很關鍵的
開發時不要一股腦的寫寫寫,多看看文檔,你會發現你不當心原生寫了個組件。。web

3.項目發佈

進入開發平臺,註冊項目信息->在編輯器中上傳版本->在開發版本中選擇提交審覈->審覈經過->項目上線小程序

部分功能解析

先看看個人項目目錄微信小程序

"pages": [
     "pages/index/index",  //主界面
      "pages/person/person", //我的界面
     "pages/classify/classify", //分類商品界面
     "pages/class/myFruits/myFruits", //水果商店
     "pages/class/myMeat/myMeat", //肉類食品商店
     "pages/myCart/myCart"    //購物車
     ],複製代碼

1.首頁輪播圖

輪播有幾種形式, 好比常見的橫向海報圖片展現, 還有橫縱向商品列表展現,頭條信息框輪換
siwper組件很好的實現了橫向海報圖片展現,好比數組

<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
            <block wx:for="{{imgUrls}}" wx:key="index">
                <swiper-item>
                    <image src="{{item}}" class="slide-image"  />
                </swiper-item>
            </block>
        </swiper>複製代碼

然而橫向滑動須要注意些別的細節
首先要給swiper組件加上scroll-x-="true"
而後給輪播的子元素父容器設置display: inline-block; white-space: nowrap; bash

頭條信息框轉換採用上下輪換, 使用scroll-view嵌套swiper完成微信

<scroll-view scroll-y-="true"  >
                <swiper autoplay="{{autoplay}}" interval="{{interval1}}" duration="{{duration}}" vertical="true">
                    <block wx:for="{{something}}" wx:key="index">
                         //內容 
                    </block>
                </swiper>
    </scroll-view>複製代碼

2.分類商品管理

首先在index界面經過onLoad生命週期函數 ,
經過easy-moc獲取後臺數據,將必要的信息送給全局的globalData app

wx.request({
       url: 'http://www.easy-mock.com/mock/5a1ffb42583969285ab22bb7/orderOnline/orderOnline',
       complete: res => {
         this.globalData.classifyList = res.data;
       },
     })複製代碼

對於數據處理,須要理清哪些是全局信息, 哪些是局部信息
好比全部商品的信息,購物車裏的商品,就得放到全局中 ,而有些好比當前界面的狀態,通常放到當前界面的Data裏面保存

而有些我的信息,好比出生年月,帳號信息 則能夠經過wx.setStorage 和wx.getStorage放入本地存儲

3.購物車操做

購物車中的操做無非是些加加減減,須要本身不斷調試,找出哪裏不合常理
經過view,button裏的bindtap等操做,實現對商品信息的修改,購物車狀態的處理

舉個例子 減小購物車中的商品的數量操做

reduceItems: function (e) {
    let carts = app.globalData.carts;    //獲取購物車的信息
    let classifyList = app.globalData.classifyList;  //獲取商品的信息
    for (let key of carts) {                        //遍歷購物車數組
      if (key.id === e.target.dataset.id) {         //經過WXML中 view裏面的bind-id傳過來的參數進行查找
        key.cartSelected = true;
        if (key.num === 1) {                  //若是數量爲1還要減
          key.num--;
          key.cartSelected = false;           //購物車不選中
          key.selected = false;               //商品中不選中
          app.globalData.carts = carts.filter((item) => {    //進行購物車中商品剔除
            return item.id != e.target.dataset.id;
          })
        } else {
          key.num--;
        }
      }
    }
    let num = 0;                                 //實時更新購物車小計界面顯示
    let totalPrice = 0;
    for (let key of carts) {
      if (key.cartSelected) {
        num += key.num;
        totalPrice += key.num * key.price;
      }
    }
    this.setData({                          //經過setData進行當前頁面Data數據管理
      cart: app.globalData.carts,
      cartTotal: num,
      cartTotalPrice: totalPrice,
    })
  },複製代碼

4.weui框架引入

在全局CSS樣式中 添加的CSS適配於全部的頁面,由此能夠引入weui ,作一些界面真的很方便

@import './styles/weui.wxss';複製代碼

總結

  1. 微信小程序的組件,API很強大,須要不斷的探索,不斷的學習,多看文檔
  2. 善於利用有效資源, 好比iconfont esay-moc weui等
  3. 切頁面要細心,善於利用彈性佈局等佈局方法,小程序的rpx確實很好用
  4. 不要一股腦的寫代碼, 當函數具備複用性,應該抽象出來,封裝好,這樣代碼才易於維護,易讀

項目地址:

github.com/fishman17/w… 內含詳細註釋

我的簡介

github : github.com/fishman17
郵箱 : 734583898@qq.com

最後 若是您喜歡這個項目的話,給個star哦 謝謝!

相關文章
相關標籤/搜索