云快卖,提供专业好用的外卖系统、跑腿系统和同城信息系统,公众号+小程序+APP多端适用。
(案例分析)vue的实战项目源码,值得收藏!
2023-06-15 09:04:10 云快卖

序言

in

初学vue时曾在网上搜索vue的实战项目源码,无奈大部份都是简单的demo,对于考量vue没有太大的帮助,剩下的一些大部份都是像音乐播放器之类的展示型项目,交互没有预期这么复杂。但我们实际在工作中,常常会碰到有购物车的项目,这类项目由于涉及到money,所以对逻辑严谨度要求高,页面之间交互复杂,又会伴随着登陆、注册、用户信息等等,经常会让我们很难受。既然还没人用vue写过这样的项目,那不如我来写,开源下来对能见到的人也会有帮助。

这些功能性的项目很实用并且常常也很沉闷,没有音乐播放器这么看上去艳丽,思来想去发觉饿了么是一个不错的素材,一来它足够复杂,开放的外卖平台比通常的公司独有商店愈加复杂。二来看到这么多小吃,你们也不会觉得到厌恶。

为何是饿了么,而不是百度,美团?缘由很简单,三个外卖大鳄里,饿了么的色调和布局是最漂亮的,看上去最舒服。

此项目大大小小共45个页面,涉及注册、登录、商品展示、购物车、下单等等外卖管理系统,是一个完整的流程。通常公司虽然是官网的单页面项目都没那么复杂,假如这个项目能驾驭的了,相信大部份公司的其他单页面应用也就不在话下,虽然更复杂,也不会比这个高到那里去。

由于借助业余时间来做,年前就开始写,又跨个年,周期有点长,项目从零布局到完成共用了2个多月的时间,目前项目早已完成,正在进行一些性能的优化,降低详尽的注释。

另外,这个项目和慕课网视频的那种饿了么没有任何关系,慕课网的项目只有一个页面,我在看完vue的官方文档后直接写了这个项目,没有参照任何人的代码,请你们不要混为一谈。

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

技术栈

vue2+vuex+vue-++ES6/7+fetch+sass+flex+svg

项目运行注意:因为涉及大量的ES6/7等新属性,node须要6.0以上版本

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

cd vue2-elm

npm install

npm run dev

另外

此项目有配套的后台系统,假如想前后台同时开发,可以下载对应的后台系统:后台项目传送地址。

此时启动项目使用:npmrunlocal而不是npmrundev。

假如只做后端开发,请忽视这句话。

说明

假如对您有帮助,您可以点右上角"Star"支持一下感谢!^_^

或则您可以""一下,我会不断掉源更多的有趣的项目

开发环境macOS10.12.3566.10.0

非常谢谢辰女生@,在百忙之中抽出时间和我一起完成了这个项目,辛苦了

如有问题请直接在中提,或则您发觉问题并有特别好的解决方案,欢迎PR

项目交流群:(QQ)

推荐一个react+redux开源项目,对react感兴趣的同学赶快去瞧瞧。地址在这儿

另外一个vue2+vuex的入门项目,比当前的项目简单好多,特别适宜入门练习。地址在这儿

关于数据插口的说明2017-05-30

因为一些缘由,原先的数据插口难以使用,造成项目未能正常运行。之后改用建立的后台系统插口,数据插口的格式保持了和官网的一致。并提供对应的后台管理系统

疗效演示

查看demo请戳这儿(请用手机模式预览)

联通端扫描下方二维码

目标功能总结

1、因为并不是elm官方,但是由于要开代理,必须在pc端打开,最多只能做到下单这一步,下单成功后可以在手机顾客端查看并付款。

2、一般涉及到money的网页逻辑都比较复杂,尤其像饿了么这样一个开放的平台,店家和乳品种类繁杂,页面与页面之间交互复杂,在讲到购物车和下单功能时诸多的数据和逻辑一度让人很难受,又没有设计和插口api文档,只能一步步摸索。

3、vue因其轻量级的框架在中大型项目中表现亮眼,在小型单页面应用中由于vuex的存在外卖管理系统,表现仍然出众,在处理复杂交互逻辑的时侯,vuex的存在是不可或缺的。所以说借助vue+vuex完全可以去做小型的单页面项目。

4、项目讲到如今,从登陆注册到、首页、搜索、商家列表、购物车、下单、订单列表、个人中心一个流程走完以后、不但对vue的理解更深一层,并且对之后掌控小型项目的时侯也有特别多的帮助,做一个实际的项目能够对自己有很大的提高。

5、曾一度怀疑,花几个月的时间做这样一个项目究竟有没有意义,原本只是想做一个小项目练练手,没想到后来越写越多,不过坚持出来后我相信一切都是值得的。

6、项目早已完成,共45个页面。

最终目标

1、用node.js建立一个模拟外卖平台的后台系统。地址在这儿

2、利用react-写出跨和IOS的原生APP版本。地址在这儿

3、如果时间来的及,会出一店家版本。

所以我的目的是建立一个横越前后端,联通IOS、的完整生态圈。

。。。敬请期盼

部份截图商铺列表页

商铺筛选页

餐厅乳品列表与购物车

确认订单页

搜索页

登陆页

个人中心

项目布局

.
├── build                                       // webpack配置文件
├── config                                      // 项目打包路径
├── elm                                         // 上线项目文件,放在服务器即可正常访问
├── screenshots                                 // 项目截图
├── src                                         // 源码目录
│   ├── components                              // 组件
│   │   ├── common                              // 公共组件
│   │   │   ├── alertTip.vue                    // 弹出框组件
│   │   │   ├── buyCart.vue                     // 购物车组件
│   │   │   ├── computeTime.vue                 // 倒计时组件
│   │   │   ├── loading.vue                     // 页面初始化加载数据的动画组件
│   │   │   ├── mixin.js                        // 组件混合(包括:指令-下拉加载更多,处理图片地址)
│   │   │   ├── ratingStar.vue                  // 评论的五颗星组件
│   │   │   └── shoplist.vue                    // msite和shop页面的餐馆列表公共组件
│   │   ├── footer
│   │   │   └── footGuide.vue                   // 底部公共组件
│   │   └── header
│   │       └── head.vue                        // 头部公共组件
│   ├── config                                  // 基本配置
│   │   ├── env.js                              // 环境切换配置
│   │   ├── fetch.js                            // 获取数据
│   │   ├── mUtils.js                           // 常用的js方法
│   │   └── rem.js                              // px转换rem
│   ├── images                                  // 公共图片
│   ├── page
│   │   ├── balance
│   │   │   ├── balance.vue                     // 余额页
│   │   │   └── children
│   │   │       └── detail.vue                  // 余额说明
│   │   ├── benefit
│   │   │   ├── benefit.vue                     // 红包页
│   │   │   └── children
│   │   │       ├── commend.vue                 // 推荐有奖
│   │   │       ├── coupon.vue                  // 代金券说明
│   │   │       ├── exchange.vue                // 兑换红包
│   │   │       ├── hbDescription.vue           // 红包说明
│   │   │       └── hbHistory.vue               // 历史红包
│   │   ├── city                 
│   │   │   └── city.vue                        // 当前城市页
│   │   ├── confirmOrder
│   │   │   ├── children
│   │   │   │   ├── children
│   │   │   │   │   ├── addAddress.vue          // 添加地址页
│   │   │   │   │   └── children
│   │   │   │   │       └── searchAddress.vue   // 搜索地址页
│   │   │   │   ├── chooseAddress.vue           // 选择地址页
│   │   │   │   ├── invoice.vue                 // 选择发票页
│   │   │   │   ├── payment.vue                 // 付款页
│   │   │   │   ├── remark.vue                  // 订单备注页 
│   │   │   │   └── userValidation.vue          // 用户验证页
│   │   │   └── confirmOrder.vue                // 确认订单页
│   │   ├── download
│   │   │   └── download.vue                    // 下载App
│   │   ├── find
│   │   │   └── find.vue                        // 发现页
│   │   ├── food
│   │   │   └── food.vue                        // 食品筛选排序页
│   │   ├── forget
│   │   │   └── forget.vue                      // 忘记密码,修改密码页
│   │   ├── home
│   │   │   └── home.vue                        // 首页
│   │   ├── login
│   │   │   └── login.vue                       // 登录注册页
│   │   ├── msite
│   │   │   └── msite.vue                       // 商铺列表页
│   │   ├── order
│   │   │   ├── children
│   │   │   │   └── orderDetail.vue             // 订单详情页
│   │   │   └── order.vue                       // 订单列表页
│   │   ├── points
│   │   │   ├── children
│   │   │   │   └── detail.vue                  // 积分说明
│   │   │   └── points.vue                      // 积分页
│   │   ├── profile
│   │   │   ├── children
│   │   │   │   ├── children
│   │   │   │   │   ├── address.vue             // 地址
│   │   │   │   │   └── children
│   │   │   │   │       ├── add.vue             // 新增地址
│   │   │   │   │       └── children
│   │   │   │   │           └── addDetail.vue   // 搜索地址
│   │   │   │   ├── info.vue                    // 帐户信息
│   │   │   │   └── setusername.vue             // 重置用户名
│   │   │   └── profile.vue                     // 个人中心
│   │   ├── search
│   │   │   └── search.vue                      // 搜索页
│   │   ├── service
│   │   │   ├── children
│   │   │   │   └── questionDetail.vue          // 问题详情
│   │   │   └── service.vue                     // 服务中心
│   │   ├── shop
│   │   │   ├── children
│   │   │   │   ├── children
│   │   │   │   │   └── shopSafe.vue            // 商铺认证信息页
│   │   │   │   ├── foodDetail.vue              // 商铺信息页
│   │   │   │   └── shopDetail.vue              // 单个商铺信息页
│   │   │   └── shop.vue                        // 商铺筛选页
│   │   └── vipcard
│   │       ├── children
│   │       │   ├── invoiceRecord.vue           // 购买记录
│   │       │   ├── useCart.vue                 // 使用卡号购买
│   │       │   └── vipDescription.vue          // 会员说明
│   │       └── vipcard.vue                     // 会员卡办理页
│   ├── plugins                                 // 引用的插件
│   ├── router
│   │   └── router.js                           // 路由配置
│   ├── service                                 // 数据交互统一调配
│   │   ├── getData.js                          // 获取数据的统一调配文件,对接口进行统一管理
│   │   └── tempdata                            // 开发阶段的临时数据
│   ├── store                                   // vuex的状态管理
│   │   ├── action.js                           // 配置actions
│   │   ├── getters.js                          // 配置getters
│   │   ├── index.js                            // 引用vuex,创建store
│   │   ├── modules                             // store模块
│   │   ├── mutation-types.js                   // 定义常量muations名
│   │   └── mutations.js                        // 配置mutations
│   └── style
│       ├── common.scss                         // 公共样式文件
│       ├── mixin.scss                          // 样式配置文件
│       └── swiper.min.css
│   ├── App.vue                                 // 页面入口文件
│   ├── main.js                                 // 程序入口文件,加载各种公共组件
├── favicon.ico                                 // 图标
├── index.html                                  // 入口html文件
.

56 directories, 203 files

GPL

免责声明:部分文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快为您处理。

云快卖

留言咨询

×