媒介
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 + 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 构建一个中大型项目
vue在开辟的过程当中的体验很不错,上手快、运转效率高,饿了么从angular转向vue不是没有原理的,看来vue会愈来愈火
开辟环境 macOS 10.12.3 Chrome 55
别的引荐一个 react + redux 开源项目,对react感兴趣的朋侪赶忙去看看。地点在这里