微信小程序?qū)崙?zhàn)-仿盒馬鮮生

盒馬鮮生是阿里巴巴對(duì)線(xiàn)下超市完全重構(gòu)的新零售業(yè)態(tài),熱度十分

項(xiàng)目功能

* 用戶(hù)信息注冊(cè)
* 首頁(yè)幾個(gè)輪播和界面交互
* 分類(lèi)商品管理購(gòu)買(mǎi)
* 購(gòu)物車(chē)界面交互及其操作
* 個(gè)人信息界面 

小程序設(shè)計(jì)過(guò)程

小程序是一個(gè)易上手的東西, 對(duì)于新手來(lái)說(shuō),多看官方文檔,可以初步做出比較完整的小程序,正是因?yàn)楹?jiǎn)單上手,功能實(shí)現(xiàn)簡(jiǎn)單,小程序是越來(lái)越火,商業(yè)價(jià)值也越來(lái)越大。

1.項(xiàng)目工具和文檔

  1. 微信web開(kāi)發(fā)者工具:微信小程序官網(wǎng)

    這是個(gè)比較好用的編輯器,對(duì)于小程序編輯很方便。

  2. 開(kāi)發(fā)文檔:微信小程序?qū)毜涿丶?/a>

    通過(guò)這個(gè)查找微信小程序的API,組件,框架等等。

  3. 圖標(biāo)庫(kù): Iconfont-阿里巴巴矢量圖標(biāo)庫(kù)

    這個(gè)可以找到自己想要的幾乎所有的小圖標(biāo),十分方便。

  4. Easy Mork: easy-mock 用于后臺(tái)的模擬,得到JSON數(shù)據(jù);

  5. weui框架引入, 例如個(gè)人信息界面,用weui可以很快很方便的做

2.項(xiàng)目開(kāi)發(fā)

微信小程序開(kāi)發(fā)和傳統(tǒng)的H5開(kāi)發(fā)還是有些不同的, 容易踩坑。
小程序是基于MVVM的的框架,合理利用數(shù)據(jù)綁定實(shí)現(xiàn)界面的更新是很關(guān)鍵的
開(kāi)發(fā)時(shí)不要一股腦的寫(xiě)寫(xiě)寫(xiě),多看看文檔,你會(huì)發(fā)現(xiàn)你不小心原生寫(xiě)了個(gè)組件。。

3.項(xiàng)目發(fā)布

進(jìn)入開(kāi)發(fā)平臺(tái),注冊(cè)項(xiàng)目信息->在編輯器中上傳版本->在開(kāi)發(fā)版本中選擇提交審核->審核通過(guò)->項(xiàng)目上線(xiàn)

部分功能解析

先看看我的項(xiàng)目目錄

   "pages": [
     "pages/index/index",  //主界面
      "pages/person/person", //個(gè)人界面
     "pages/classify/classify", //分類(lèi)商品界面
     "pages/class/myFruits/myFruits", //水果商店
     "pages/class/myMeat/myMeat", //肉類(lèi)食品商店
     "pages/myCart/myCart"    //購(gòu)物車(chē)
     ],

1.首頁(yè)輪播圖

輪播有幾種形式, 比如常見(jiàn)的橫向海報(bào)圖片展示, 還有橫縱向商品列表展示,頭條信息框輪換
siwper組件很好的實(shí)現(xiàn)了橫向海報(bào)圖片展示,比如

       <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>

然而橫向滑動(dòng)需要注意些別的細(xì)節(jié)

首先要給swiper組件加上scroll-x-="true"

然后給輪播的子元素父容器設(shè)置display: inline-block; white-space: nowrap;

頭條信息框轉(zhuǎn)換采用上下輪換, 使用scroll-view嵌套swiper完成

   <scroll-view scroll-y-="true"  >
                <swiper autoplay="{{autoplay}}" interval="{{interval1}}" duration="{{duration}}" vertical="true">
                    <block wx:for="{{something}}" wx:key="index">
                         //內(nèi)容 
                    </block>
                </swiper>
    </scroll-view> 

2.分類(lèi)商品管理

首先在index界面通過(guò)onLoad生命周期函數(shù) ,
通過(guò)easy-moc獲取后臺(tái)數(shù)據(jù),將必要的信息送給全局的globalData

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

對(duì)于數(shù)據(jù)處理,需要理清哪些是全局信息, 哪些是局部信息

比如所有商品的信息,購(gòu)物車(chē)?yán)锏纳唐?,就得放到全局?,而有些比如當(dāng)前界面的狀態(tài),一般放到當(dāng)前界面的Data里面保存

而有些個(gè)人信息,比如出生年月,賬號(hào)信息 則可以通過(guò)wx.setStorage 和wx.getStorage放入本地存儲(chǔ)

3.購(gòu)物車(chē)操作

購(gòu)物車(chē)中的操作無(wú)非是些加加減減,需要自己不斷調(diào)試,找出哪里不合常理
通過(guò)view,button里的bindtap等操作,實(shí)現(xiàn)對(duì)商品信息的修改,購(gòu)物車(chē)狀態(tài)的處理

舉個(gè)例子 減少購(gòu)物車(chē)中的商品的數(shù)量操作

reduceItems: function (e) {
    let carts = app.globalData.carts;    //獲取購(gòu)物車(chē)的信息
    let classifyList = app.globalData.classifyList;  //獲取商品的信息
    for (let key of carts) {                        //遍歷購(gòu)物車(chē)數(shù)組
      if (key.id === e.target.dataset.id) {         //通過(guò)WXML中 view里面的bind-id傳過(guò)來(lái)的參數(shù)進(jìn)行查找
        key.cartSelected = true;
        if (key.num === 1) {                  //如果數(shù)量為1還要減
          key.num--;
          key.cartSelected = false;           //購(gòu)物車(chē)不選中
          key.selected = false;               //商品中不選中
          app.globalData.carts = carts.filter((item) => {    //進(jìn)行購(gòu)物車(chē)中商品剔除
            return item.id != e.target.dataset.id;
          })
        } else {
          key.num--;
        }
      }
    }
    let num = 0;                                 //實(shí)時(shí)更新購(gòu)物車(chē)小計(jì)界面顯示
    let totalPrice = 0;
    for (let key of carts) {
      if (key.cartSelected) {
        num += key.num;
        totalPrice += key.num * key.price;
      }
    }
    this.setData({                          //通過(guò)setData進(jìn)行當(dāng)前頁(yè)面Data數(shù)據(jù)管理
      cart: app.globalData.carts,
      cartTotal: num,
      cartTotalPrice: totalPrice,
    })
  },

4.weui框架引入

在全局CSS樣式中 添加的CSS適配于所有的頁(yè)面,由此可以引入weui ,做一些界面真的很方便

@import './styles/weui.wxss';

總結(jié)

  1. 微信小程序的組件,API很強(qiáng)大,需要不斷的探索,不斷的學(xué)習(xí),多看文檔
  2. 善于利用有效資源, 比如iconfont esay-moc weui等
  3. 切頁(yè)面要細(xì)心,善于利用彈性布局等布局方法,小程序的rpx確實(shí)很好用
  4. 不要一股腦的寫(xiě)代碼, 當(dāng)函數(shù)具有復(fù)用性,應(yīng)該抽象出來(lái),封裝好,這樣代碼才易于維護(hù),易讀

項(xiàng)目地址:

https://github.com/fishman17/...

內(nèi)含詳細(xì)注釋

最后 如果您喜歡這個(gè)項(xiàng)目的話(huà),給個(gè)star哦 謝謝!

本文作者:fishman17
原文地址:微信小程序?qū)崙?zhàn)-仿盒馬鮮生-教程-小程序社區(qū)-微信小程序-微信小程序開(kāi)發(fā)社區(qū)-小程序開(kāi)發(fā)論壇-微信小程序聯(lián)盟

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目初覽 仿造盒馬鮮生,實(shí)現(xiàn)了部分功能。 盒馬鮮生是阿里巴巴對(duì)線(xiàn)下超市完全重構(gòu)的新零售業(yè)態(tài),熱度十分 項(xiàng)目功能 小...
    時(shí)光與秋風(fēng)閱讀 1,293評(píng)論 0 1
  • 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434...
    Programmer客棧閱讀 39,597評(píng)論 3 105
  • 微信小程序相關(guān)的文檔、教程、開(kāi)源項(xiàng)目等資源的整理,以便于開(kāi)發(fā)學(xué)習(xí)使用。 —— —— 收錄僅作個(gè)人學(xué)習(xí)使用,涉及侵權(quán)...
    Anyers閱讀 35,156評(píng)論 2 53
  • 大家好,我學(xué)習(xí)投資理財(cái)已經(jīng)有幾年的時(shí)間,之前在銀行做理財(cái),希望分享自己的經(jīng)驗(yàn)對(duì)大家有所幫助! 我讀大學(xué)四年,申請(qǐng)助...
    背包客_b9fd閱讀 309評(píng)論 1 6
  • 社會(huì)群體:通過(guò)一定的社會(huì)關(guān)系結(jié)合起來(lái)共同活動(dòng)的集體。【廣義】:家庭、鄉(xiāng)村、城市、政黨、國(guó)家乃至人類(lèi)各種不同類(lèi)型的社...
    寒冰蘑菇閱讀 1,487評(píng)論 0 0

友情鏈接更多精彩內(nèi)容