这个项目能做什么
# 项目概览
这是一个用 vue2 + vuex 编写的大型单页面应用示例,以饿了么外卖场景为素材,README 说明作者在业余时间从零开始布局到完成,历时约两个多月。项目定位偏向功能完整、逻辑复杂的实战练习,而非简单 demo。作者注明该项目与慕课网的饿了么课程项目无关,且项目纯属个人练习,正常下单应使用官方客户端。
# 技术栈
vue2 + vuex + vue-router + webpack + ES6/7 + fetch + sass + flex + svg。README 提示因涉及大量 ES6/7 新特性,node 需要 6.0 以上版本。
# 项目运行
```
git clone https://github.com/bailicangdu/vue2-elm.git
cd vue2-elm
npm install 或 yarn(推荐)
npm run dev
```
# 接口数据与配套项目
所有接口数据来自配套的后台系统 node-elm。若想体验前后台同时开发,可下载后台系统,此时启动命令为 `npm run local` 而不是 `npm run dev`。此外还提供了基于 element-ui 搭建的后台管理页面 vue2-manage。仅做前端开发时可忽略。README 也提到预览地址与接口需要使用 https 访问。
# 已实现的功能
- 定位功能
- 选择城市
- 搜索地址
- 展示所选地址附近商家列表
- 搜索美食、餐馆
- 根据距离、销量、评分、特色菜、配送方式等进行排序和筛选
- 餐馆食品列表页
- 购物车功能
- 店铺评价页面
- 单个食品详情页面
- 商家详情页
- 登录、注册
- 修改密码
- 个人中心
- 发送短信、语音验证
- 下单功能
- 订单列表
- 订单详情
- 下载 App
- 添加、删除、修改收货地址
- 帐户信息
- 服务中心
- 红包
- 上传头像
未实现的功能:付款(README 中标注为“臣妾做不到啊”)。
# 项目结构
源码位于 src 目录,包含 components(common、footer、header 公共组件,如弹出框、购物车、倒计时、加载动画、评分星、餐馆列表、底部与头部组件)、config(env.js 环境切换、fetch.js 获取数据、mUtils.js 常用方法、rem.js 单位转换)、images、page(按业务划分的页面目录,如 balance、benefit、city、confirmOrder、download、find、food、forget、home、login、msite、order、points、profile、search、service、shop、vipcard)、plugins、router、service(getData.js 统一管理接口、tempdata 临时数据)、store(vuex 的 action、getters、index、modules、mutation-types、mutations)与 style(common.scss、mixin.scss、swiper.min.css)。根目录还有 build(webpack 配置)、config(打包路径)、elm(上线文件)、screenshots(截图)、App.vue、main.js、index.html 等。README 统计为 56 个目录、203 个文件。
# 作者总结与后续目标
README 提到涉及 money 的网页逻辑较复杂,商家与食品种类多、页面交互复杂,写购物车和下单时数据与逻辑比较头疼,且没有设计与接口 API 文档,只能逐步摸索;作者认为 vuex 在处理复杂交互逻辑时不可或缺,vue + vuex 完全可以做大型单页项目。后续目标包括:用 node.js 构建模拟外卖平台的后台系统、写出跨 Android 和 iOS 的原生 APP 版本,时间允许还会出卖家版本。
# 演示与许可
README 提供在线 demo 地址(建议用 Chrome 手机模式预览)与移动端二维码,并附有商铺列表页、商铺筛选页、餐馆食品列表与购物车、确认订单页、搜索页、登录页、个人中心等截图。项目交流可通过 Gitter 群组或 Issues/PR 参与。许可证为 GPL。
评论
0 评分人数达到10人后显示
登录后参与讨论。