Vue.js项目:外卖WebApp项目总结

Vue-Elm-Shop

Welcome to Vue-Elm-Shop👋

🚀 如何运行

# 克隆
git clone https://github.com/yxiuzhu/elm-shop.git
# 打开项目目录
cd elm-shop
# 安装依赖
npm install
# 开启本地服务运行项目
npm run serve

项目演示

在这里插入图片描述

项目页面及功能

  • Header 公告详情页
  • Goods 商品列表
  • Foods 食物详情页
  • Ratings 评价详情页
  • Seller 店铺详情页

📓Header 公告详情页

  • support-ico 优惠图标组件抽样
  • Star 星星组件抽样
  • 背景图片高斯模糊
  • CSS Sticky footers 布局

🍚Goods商品列表

  • 引入第三方JS库better-scroll,处理移动列表滚动,实现商品左右列表联动
  • 自定义Vue.js过渡动画,实现小球飞出动画及贝塞尔曲线缓动函数应用

🍗Foods 食物详情页

  • Split 分隔组件抽样
  • RatingSelect 评论组件抽样
  • 时间格式化 引入第三方JS库Moment.js

📝Ratings 评价详情页

  • Vue.js 组件复用

  • 媒体查询适应小屏手机

📄Seller 店铺详情页

  • 基于localStorage的移动端数据存取方案

  • keep-alive实现组件缓存,体验优化

实用的组件

通用组件包括如下

  • Star 星星组件
  • Split 分隔组件
  • Loading 组件

还有一些是为本项目量身订做的组件,与上面的通用组件都在 src/components 目录下

CSS布局样式

  • 公共base.styl–媒体查询,解决移动端border-1px问题;结合BFC解决高度塌陷问题
  • 图标icon.styl-通过icomoon.io网站制作文字图标样式
  • 混入mixin.styl–移动端border-1px样式及背景图片大小适配

项目优化

webpack-chain 件优化打包后的项目体积

作者

👤 y_xiuzhu(杨秀竹)

项目github地址,期待你的星星🌟

项目课程

👤 ustbhuangyi(黄轶)

项目结构

common-文件夹存放的是通用的css和icon样式文件
componets-文件夹用来存放Vue组件
router-文件夹设置Vue Router
dist-webpack打包编译后的项目文件
Prod.server.js-利用express搭建node服务获取数据的代理接口文件
App.vue-根组件,设置子组件的引用与跳转
Main.js-创建Vue实例及插件的使用
README.md-项目简介

项目总结

移动端border-1px样式0.5px和0.1px样式的实现方法
在这里插入图片描述
在这里插入图片描述

BFC解决高度塌陷问题
在这里插入图片描述

CSS Sticky footers 布局

Sticky Footer是css的一种布局场景。页脚footer永远固定在页面的底部

应用背景:当页面内容不够长的时候,页脚块需要粘贴在视口底部;当页面内容足够长,页脚块会被内容向下移动

  • 实现:父级 position:fixed,内容设为padding-bottom:64px,页脚相对定位,margin-top:-64px,clear:both为了保证兼容性,父级要清除元素左右浮动

在这里插入图片描述

自适应布局

1、左侧宽度固定80px,右侧宽度自适应
在这里插入图片描述
2、媒体查询适应小屏手机
在这里插入图片描述

背景图片高斯模糊

1、backdrop-filter: blur(10px)适用于ios系统;
2、filter:blur(10px)会导致整个屏幕的元素模糊

注意,所有在内的子元素也会模糊,包括文字。所以采用定位布局,背景单独占用一个层,ios有一个设置backdrop-filter:blur(10px),只会模糊背景,但不支持android

在这里插入图片描述

Vue.js过渡动画

使用 JavaScript 钩子函数实现小球飞出动画及贝塞尔曲线缓动函数应用

  • 涉及组件ShopCart.vue、Good.vue
  • Good组件捕获添加食物的add点击事件,调用子组件ShopCart的钩子函数实现小球飞出动画
  • 组件复用:通过父子组件之间的通信,实现子组件CartControl.vue的小球飞出动画
    在这里插入图片描述
    在这里插入图片描述

Star 星星组件

根据指定大小的图片size及评分生成星星评分组件
实现组件的抽样复用
在这里插入图片描述
在这里插入图片描述

时间戳的转换

时间戳的转换

  • 1、利用过滤器
  • 2、利用Moment.js开源库实现时间戳的转换
    在这里插入图片描述

Seller 店铺详情页

商家实景图片的横向滚动

  • 解决方案:
  • 每个 lidisplay:inline-block,因为width不会自动撑开父级ul,所以需要将计算后的宽度赋值给ulwidth,(每一张图片的width+margin)*图片数量-一个margin,因为最后一张图片没有margin;外层图片不换行white-space: nowrap
  • 同时new BScroll里面要设置scrollX: true,eventPassthrough: ‘vertical’, // 滚动方向横向,竖向不能滚动

在这里插入图片描述

基于localStorage的移动端数据存取方案

  • 使用query-string第三方库对query进行解析,获取查询地址,将对不同id的数据进行缓存
  • 使用good-storage的第三方库进行localStorage的存取操作
    在这里插入图片描述

项目优化

  • 使用webpack-bundle-analyzer分析工具,npm run report 生成可视化的分析报告,
  • 通过减小第三方库中不需要的功能,将打包后的项目体积减少28%

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值