vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能

媒介

vue2的宣布后本身也研讨了一段时刻,怎样公司的手艺栈是以react为主,没有机会好好运用vue2去做一个完整的项目。虽然写了几个demo,但和写一个完整的项目照样有很大差异的。因而本身想着用空余的时刻写一个项目,挑选了饿了么也只是由于经经常运用,熟习它的规划。之前的饿了么官网是用angular写的,近来才发明本来这段时刻改成了vue,看来饿了么也入了vue的坑。

既然要写一个完整的项目,就要认真对待,所以除了付款其他一切功用都尽量的完成,包含上岸、注册、个人中间、搜刮、购物车、下单等等,也包含一切我能注意到的细节也都一并做出来,所以这相对算是一个比较大的项目。

项目不运用模仿数据,一切数据均运用从官网及时猎取的实在数据,最大水平完成和官网一样的功用,所以起首碰到的问题是跨域,我们启动当地服务器是猎取不到官网数据的,这是跨域的。固然处置惩罚的要领许多,jsonp,nginx反向代办,webpack-dev-server的proxy,这里我用的是 http-proxy-middleware 原理都是一样的。

注:此项目纯属个人瞎搞,平常下单请挑选饿了么官方客户端。

源码地点:

https://github.com/bailicangdu/vue2-elm

结果演示

(演示结果为模仿数据,只做展现用,实在结果请下载项目并运转,即可猎取实在的官网数据);

demo地点(请用chrome手机形式预览)

挪动端扫描下方二维码

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

手艺栈

vue2 + vue-rotuer2 + vuex + webpack + ES6/7 + fetch + sass + flex + svg + http-proxy-middleware反向代办

目的功用

定位功用 — 完成

  • 挑选都市 — 完成

  • 搜刮地点 — 完成

  • 展现所选地点四周商家列表 — 完成

  • 搜刮美食,餐馆 — 完成

  • 依据间隔、销量、评分、特色菜、配送体式格局等举行排序和挑选 — 完成

  • 餐馆食物列表页 — 完成

  • 购物车功用 — 完成

  • 商号评价页面 — 完成

  • 单个食物概况页面 — 完成

  • 商家概况页 — 完成

  • 上岸、注册 — 完成

  • 修正暗码 — 完成

  • 个人中间 — 完成

  • 发送短信、语音考证 — 完成

  • 下单功用 — 完成 ✨✨??

  • 定单列表 — 完成

  • 定单概况 — 完成

  • 帐户信息

  • 上传头像,修正用户名

  • 积分商城

  • 服务中间

  • 增加、删除、修正收货地点

  • 付款(很难完成)

项目规划

|-- build                            // webpack设置文件
|-- config                           // 项目打包途径
|-- elm                                // 上线项目文件,放在服务器即可平常接见
|-- screenshots                      // 项目截图
|-- src                              // 源码目次
|   |-- components                   // 组件
|       |-- common                   // 大众组件
|            |-- buyCart.js           // 购物车组件
|            |-- loading.js           // 页面初始化加载数据的动画组件
|            |-- mixin.js             // 组件夹杂(包含:指令-下拉加载更多,处置惩罚图片地点)
|            |-- ratingStar.js        // 批评的五颗星组件
|            |-- shoplist.js          // msite和shop页面的餐馆列表大众组件
|       |-- footer                   // 底部大众组件
|       |-- header                      // 头部大众组件
|   |-- config                       // 基础设置
|       |-- env.js                   // 环境切换设置
|       |-- fetch.js                 // 猎取数据
|       |-- mUtils.js                // 经常运用的js要领
|       |-- rem.js                   // px转换rem
|   |-- images                       // 大众图片
|   |-- pages                        // 页面组件
|       |-- city                     // 当前都市页
|        |-- food                      // 食物挑选排序页
|        |-- confirmOrder             // 确认定单页
|          |--children
|            |--invoice                 //    挑选发票页
|            |--remark                 //    定单备注页
|            |--payment                 //    付款页
|            |--userValidation         //    用户考证页
|            |--chooseAddress         //    挑选地点页
|              |--children
|                |--addAddress        //    增加地点页
|                  |--children
|                    |--searchAddress // 搜刮地点页
|       |-- find                     // 发明页
|       |-- forget                   // 遗忘暗码,修正暗码页
|       |-- home                     // 首页
|       |-- login                    // 上岸注册页
|       |-- msite                    // 商店列表页
|       |-- order                    // 定单列表页
|            |--children
|                |--orderDetail         // 定单概况页
|       |-- profile                  // 个人中间
|            |--children
|                |--balance             // 我的余额
|                |--benefit             // 我的优惠
|                |--info                 // 帐户信息
|                |--points             // 我的积分
|                |--service             // 服务中间
|       |-- search                   // 搜刮页
|       |-- shop                     // 商店挑选页
|            |-- children             
|                  |-- foodDetail       // 商店信息页     
|                  |-- shopDetail       // 单个商店信息页
|                    |-- children             
|                          |-- shopSafe // 商店认证信息页     
|       |-- vipcard                  // vip解决页
|
|   |-- plugins                      // 援用的插件
|
|   |-- router                       // 路由设置
|
|   |-- service                      // 数据交互一致分配
|        |-- template                 // 开辟阶段的暂时数据
|        |-- getData.js               // 猎取数据的一致分配文件,对接口举行一致治理
|
|   |-- store                        // vuex的状况治理
|       |-- modules                  // store模块
|       |-- action.js                // 设置actions
|       |-- getters.js               // 设置getters
|       |-- index.js                 // 援用vuex,建立store
|       |-- mutation-types.js        // 定义常量muations名
|       |-- mutations.js             // 设置mutations
|
|   |-- style                        // 种种款式文件
|       |-- common.scss              // 大众款式文件
|       |-- mixin.scss               // 款式设置文件
|
|   |-- App.vue                      // 页面进口文件
|
|   |-- main.js                      // 顺序进口文件,加载种种大众组件
|
|-- .babelrc                         // ES6语法编译设置
|-- .editorconfig                    // 代码编写规格
|-- .gitignore                       // 疏忽的文件
|-- favicon.ico                      // 页面左上角小图标
|-- index.html                       // 进口html文件
|-- package.json                     // 项目及东西的依靠设置文件
|-- README.md                        // 申明

总结

1、由于并非elm官方,而且由于要开代办,必须在pc端翻开,所以估计最多只能做到下单这一步,下单胜利后能够在手机客户端检察并付款。

2、如今下单功用已完成✨✨??,下单功用完整采纳官网实在数据,能够掌握官网发短信或许打电话到指定的手机号码,下单后能够在手机App中检察而且付款。

3、平常涉及到money的网页逻辑都比较庞杂,特别像饿了么如许一个开放的平台,商家和食物品种繁多,页面与页面之间交互庞杂,在写到 购物车 和 下单 功用时浩瀚的数据和逻辑一度让人很头疼,又没有设想和接口文档,只能一步步探索。

4、vue因其轻量级的框架在中小型项目中表现亮眼,在大型单页面运用中由于vuex的存在,表现依旧精彩,在处置惩罚庞杂交互逻辑的时刻,vuex的存在是不可或缺的。所以说运用 vue + vuex 完整能够去做大型的单页面项目。

5、在项目中并没有运用太多的插件,一切功用尽量本身完成,对插件依靠太多并非一件功德。

6、项目写到如今,从 上岸注册到、首页、搜刮、商家列表、购物车、下单、定单列表、个人中间 一个流程走完今后、不但对vue的明白更深一层,而且对今后掌控大型项目的时刻也有异常多的协助,做一个现实的项目才能对本身有很大的提拔。

7、项目已完成的页面共 22 个,最重要的购物下单功用已完成,估计悉数完成后总页面数在 35 个摆布。

项目截图

都市列表页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

搜刮地点页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

商店列表页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

商店挑选页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

搜刮页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

餐馆食物列表与购物车

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

餐馆批评页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

餐馆信息页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

上岸页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

个人中间

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

确认定单页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

定单列表页

《vue2 + vuex 高度复原 饿了么 App,与官方背景实在数据交互,猎取商品信息,完成上岸、购物车、下单等功能》

其他页面正在开辟中。。。

末了

本项目重要用于熟习如何用 vue2 构建一个中大型项目

vue在开辟的过程当中的体验很不错,上手快、运转效率高,饿了么从angular转向vue不是没有原理的,看来vue会愈来愈火

开辟环境 macOS 10.12.3 Chrome 55

别的引荐一个 react + redux 开源项目,对react感兴趣的朋侪赶忙去看看。地点在这里

个人时刻有限,另有其他的项目要做,在此谢谢辰妹子,个人中间的一切页面都由她来完成,辛苦了!?
假如以为不错,请star一下吧 ?
    原文作者:cangdu
    原文地址: https://segmentfault.com/a/1190000008428038
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞