mpvue實戰開發美團外賣小程式
mpvue-meituan
mpvue-meituan 是一款使用mpvue開發的實戰小程式專案,完全仿製美團官方外賣點餐小程式開發而成,專案的框架結構完全按照企業開發架構搭建而成。結合了原生小程式的開發能力和Vue能力,使小程式開發起來更加便捷高效,專案使用了比較流行的Vuex框架來作為全域性的狀態資料管理,使資料互動更加的便捷,結合了sass的使用讓寫Css樣式更加的得心應手。目前市面上有很多使用mpvue開發的示例Demo,但是那些示例Demo都過於簡單,沒有提供一套系統的框架結構,借鑑的意義不是很大。所以作者就開源了一個企業級框架開發的小程式供大家學習參考,總之是一個極力推薦學習的小程式實戰專案。
開源專案Git倉庫地址:https://github.com/guangqiang-liu/mpvue-meituan
目錄
專案簡介
mpvue-meituan 是一款使用mpvue開發的小程式,完全仿製美團官方外賣小程式。目前市面上大部分的小程式開發還是使用微信原生的開發能力,原生的開發能力約束太多,導致小程式開發成本變高。於是市面上衍生出不少小程式開發框架,其中最為流行的有下面三個框架:
wepy
taro
mpvue
。這三個框架出自不同的大廠,之前不太瞭解的小夥伴們可以自行查閱資料。本專案主要介紹如何使用vue來快速開發一款複雜的小程式專案。
主要功能(20+頁面)
- 首頁Tab
- 首頁商家列表
- 選擇收貨地址列表
- 選擇城市
- 商品搜尋列表
- 分類列表
- 邀請好友領紅包
- 新增購物車頁面
- 食品檔案
- 訂單Tab
- 訂單列表
- 提交訂單
- 商品備註
- 訂單詳情
- 商品評論
- 我的Tab
- 我的頁面
- 美團紅包頁面
- 無效紅包頁面
- 代金券頁面
- 無效代金券列表
- 收貨地址列表
- 新增收貨地址
- 幫助反饋
- 協議說明
- 待補充
預覽效果圖
安裝除錯
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
API資料來源
mpvue-meituan 專案的資料來源目前均來自美團外賣小程式抓包資料,將抓包資料儲存為本地JSON,然後工程訪問本地JSON資料。由於美團外賣小程式屬於美團正式線上產品,故不能直接訪問其真實API,使用本地JSON一樣能實現絕大部分需求,少數需要資料互動的需求自己mock資料即可。
技術要點
- 微信原生小程式開發能力
- mpvue開發小程式能力
- Vue開發能力
- less,sass 等css編譯器用法
- 小程式開發基礎框架結構搭建
- 小程式網路層封裝
- Vuex全域性狀態管理框架的使用
- 小程式,vue元件化開發技巧
- 小程式中iconFont使用技巧
- 使用canvas繪製小程式分享海報技巧
- 待補充
核心元件庫
- mpvue
- vuex
- lodash
- mpvue-wxparse
- minapp-api-promise
- 待補充
開發中遇到的坑
待補充
待完成功能
- [ ] 選擇城市列表
- [ ] 分類篩選功能
- [ ] 購物車頁面完善優化
- [ ] 發表評論功能
- [ ] 提交訂單頁面完善優化
- [ ] canvas繪製分享海報
- [x] vuex狀態管理使用
- [x] 常用工具類封裝
- [x] 元件化使用
- [x] sass環境的搭建及使用
- [ ] 待補充
目錄結構
.
├── App.vue
├── action
│ └── action.js
├── app.json
├── assets
│ ├── global.scss
│ └── iconfont.less
├── components
│ ├── card.vue
│ └── sep-line.vue
├── constants
│ ├── commonType.js
│ ├── errorCodeMap.js
│ ├── hostConfig.js
│ ├── pathConfig.js
│ └── responseCode.js
├── main.js
├── middlewares
│ └── index.js
├── network
│ ├── cache
│ │ └── cache.js
│ └── request
│ ├── HttpExtension.js
│ └── HttpRequest.js
├── pages
│ ├── addAddress
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── addressList
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── categoryList
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── citySearch
│ │ ├── index.vue
│ │ └── main.js
│ ├── citys
│ │ ├── index.vue
│ │ └── main.js
│ ├── commentList
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── couponList
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── dicedActivity
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── expiredCoupon
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── expiredRedPacket
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── feedback
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── home
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── index
│ │ ├── index.vue
│ │ └── main.js
│ ├── me
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── orderDetail
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── orderList
│ │ ├── data.js
│ │ ├── index.vue
│ │ └── main.js
│ ├── pickProtocol
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── protocol
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── redPacket
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── remark
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── searchList
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── selectAddress
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── share
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── shoppingCart
│ │ ├── data.js
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ └── submitOrder
│ ├── data.js
│ ├── index.vue
│ ├── main.js
│ └── main.json
├── store
│ ├── index.js
│ ├── modules
│ │ ├── shoppingCart.js
│ │ └── submitOrder.js
│ └── mutations-type.js
└── utils
├── arrayExtension.js
├── bus.js
├── deepClone.js
├── deviceInfo.js
├── formatTime.js
├── index.js
├── mta_analysis.js
├── regex.js
├── stringExtension.js
├── style.js
├── toast.js
└── wxapi.js
37 directories, 117 files
總結
mpvue-meituan 專案是作者大約使用了2周時間開源的一款小程式專案,專案中基本涵蓋了企業開發中常用的技術要點,非常適合想學習小程式開發的小夥伴們參考學習。相信此專案能給小夥伴們帶來不一樣的收穫。大家也可以加作者的mpvue小程式交流群交流學習(
QQ群號:694979037
)。當然,如果老鐵們認為作者的開源專案還不錯,也請點個
star
支援一下 ??? ,也衷心的歡迎小夥伴們提些寶貴的意見和建議。
開源專案Git倉庫地址:https://github.com/guangqiang-liu/mpvue-meituan
更多文章
- 作者React Native開源專案OneM地址(按照企業開發標準搭建框架完成開發的):https://github.com/guangqiang-liu/OneM:歡迎小夥伴們 star
- 作者簡書主頁:包含60多篇RN開發相關的技術文章http://www.jianshu.com/u/023338566ca5 歡迎小夥伴們:多多關注,多多點贊
- 作者React Native QQ技術交流群:620792950 歡迎小夥伴進群交流學習
相關文章
- mpvue外賣小程式Vue
- 高仿美團外賣小程式
- 美團外賣小程式的探索與實踐丨掘金開發者大會
- 美團小程式框架mpvue蹲坑指南框架Vue
- 美團小程式框架mpvue入門教程框架Vue
- mpvue開發小程式Vue
- 美團外賣小程式的探索和實踐(演講內容整理)丨掘金開發者大會
- 美團外賣Android Lint程式碼檢查實踐Android
- 美團小程式框架mpvue(花名:沒朋友)蹲坑指南框架Vue
- 美團小程式框架mpvue踩坑總結編一框架Vue
- WeGeek Talk | 美團外賣
- mpvue開發小程式總結Vue
- 美團外賣Flutter動態化實踐Flutter
- Flutter Web在美團外賣的實踐FlutterWeb
- WMRouter:美團外賣Android開源路由框架Android路由框架
- 使用mpvue開發微信小程式Vue微信小程式
- 記一次基於mpvue的小程式開發及上線實戰Vue
- 美團外賣極速支付怎麼取消?美團外賣極速支付的取消方法
- 使用 Mpvue 開發微信小程式的最佳實踐Vue微信小程式
- 實戰丨如何製作一個完整的外賣小程式(已開源)
- 美團外賣Android Crash治理之路Android
- 美團外賣:中國輕食外賣消費報告
- mpvue小程式開發 - 生命週期梳理Vue
- 使用mpvue開發github小程式總結VueGithub
- 美團外賣開源路由框架 WMRouter 原始碼分析路由框架原始碼
- 開發筆記:使用 mpvue 開發鬥圖小程式筆記Vue
- 美團外賣Android平臺化的複用實踐Android
- 美團外賣終端容器無關化研發框架框架
- mpvue & 小程式開發過程中的坑Vue
- 小程式開發-mpvue中使用圖表庫Vue
- 美團外賣推薦情境化智慧流量分發的實踐與探索
- Taro + 小程式雲開發實戰
- 小程式開發-mpvue構建小程式專案-1-踩坑Vue
- mpvue開發微信小程式踩坑筆記Vue微信小程式筆記
- 小程式開發總結一:mpvue框架及與小程式原生的混搭開發Vue框架
- iOS App冷啟動治理:來自美團外賣的實踐iOSAPP
- 美團外賣基於GPU的向量檢索系統實踐GPU
- 美團外賣廣告智慧算力的探索與實踐(二)