曹阳的博客 仅用于学习和分享

锤子商城前端界面

2019-11-05

B站vue做锤子商城教程

P1-项目介绍

  1. 项目名称:Vue锤子商城
  2. 架构:脚手架
  3. 成果:锤子商城加入购物车,下单购买,修改收货地址等
  4. 开发周期:2019/11/05-2019/11/07
  5. 收获:学会了安装vue-cli环境,目录结构,Vue指令的基本操作,封组件,分配路由,能简单改成毕设前台页面

P2-环境配置及目录结构

环境配置

  • node12.13.0:官网下载
  • npm6.12.0(依赖管理):node装完就有了
  • cnpm:npm install cnpm -g
  • vue(构建用户界面的渐进式框架):cnpm install vue
  • vue-cli:cnpm install –global vue-cli
  • webpack(打包工具):vue init webpack 项目名
  • 运行:cd进到项目文件夹,npm run dev
  • 安装依赖:npm install
  • vuex(状态):npm install vuex –save
  • vue-router(路由):npm install vue-router
  • eslint(代码检测):npm install eslint
  • npm install material-ui-vue –save(需要和material框架合作时要安装material-ui-vue,这个项目不用)

目录结构

  • node_modules:
  • build:项目构建(webpack)相关代码
  • config:项目开发环境配置
  • src:源码目录
    • assets:存放样式和图片
    • components:存放组件
    • lib:放模拟好的数据
    • router:存放路由的配置文件
    • store:存放vuex的相关文件
    • views:存放页面
    • App.vue:页面入口文件
    • main.js:程序入口文件,加载各种公共组件
  • static:静态文件,比如一些图片,json数据等
  • index.html:入口页面
  • package.json:项目基本信息
  • readme.json:项目说明

P3-商品列表页的布局

  1. 在App.vue写整体页面框架,拆成两个部分:导航+列表,导航部分作为一个公共的组件
  2. 在components里创建header-nav.vue,把切图index.html的导航部分代码粘到template标签里
  3. 把切图的header.css样式和reset.css样式粘到assets里的css里
  4. 把组件内容引入到页面中:在router里的index.js导入样式reset.css和header.css,把原来自带的引入Hello和Hello的路径删掉
  5. 在App.vue中引入header-nav页面
  6. 在App.vue中建立组件headerNav
  7. 把切图里的图片粘贴到assets里的img内
  8. 在views里新建一个页面shop.vue,把index.html商品列表部分代码粘到template标签内
  9. 把切图的goodsList.css粘贴到shop.vue的style标签内,多余的代码删掉(复制到css里引入也行)
  10. 在router的index.js中引用shop.vue
  11. 在router的index.js中添加shop路径

P4-商品列表套数据

  1. 在lib里新建一个newGoodsData.js存放模拟商品数据
  2. 在lib里的newGoodsData.js的最后把数据暴露出去,让数据能在页面中拿到
  3. 在views里的shop.vue里套数据,只留一块item,其他的都删掉
  4. 在script标签里引入newGoodsData
  5. 给这些数据一个挂载点能拿到数据
  6. 给item那一小块加个v-for循环
  7. 报错复制链接查怎么改,去“Eslint规则说明”博客里去找原因,调整newGoodsData.js文件,重新运行(引号报错:vue中都是双引号,页面中都是单引号,统一一下格式都换成一样的单引号)
  8. 把数据改成{ {item.name} }的形式,属性里的内容要加冒号
  9. v-for循环颜色

P5-商品页组件

  1. (把一块item封装成组件,通过父级的数据循环一个个的组件)在views里的shop.vue建立一个自定义的标签shop-item来代替我们要修改的内容,v-for循环它
  2. 在components里新建一个组件shop-item.vue,把shop.vue里的shop-item里的内容剪切到shop-item.vue里的template里来
  3. 在shop.vue里定义一个组件shopItem
  4. 把shop-item.vue引入到shop.vue里来
  5. 报错,这里要用到一个组件之间的信息传递,把父级shop.vue中的数据传递到子级shop-item.vue中去:在shop.vue中加个:item="item",在shop-item.vue中的script中使用props接收item,item的值的类型是一个对象
  6. (选择颜色,从对象中拿到所对应的的当前颜色的第几个),定义一个值,给它初始值为0,把上面循环的0改成itemIndex
  7. 在shop-item.vue的script里写一个方法当我们点击的时候把他的index传过来,在循环的时候加一个click事件
  8. 在shop-item.vue里的加一个a标签的选中状态

P6-商品加入购物车

  1. (把加入购物车的弹出框做成一个组件,它是两个组件中的通讯,并且购物车里面的数据会带到其他的页面当中,所以这里就要用到状态管理工具vuex)在store里新建一个index.js
  2. 在store里的index.js里引入vue和vuex,让vue去使用vuex
  3. 创建一个store,实例化对象,并把它暴露出去
  4. 到main.js中去引入store
  5. 在store里的index.js里创建一个数组来存放加入购物车的数据
  6. 添加购物车方法
  7. 在shop-item.vue里调用加入购物车方法
  8. 在components里新建car-panel.vue,把购物车封装成一个组件car-panel,在header-nav.vue中使用car-panel标签
  9. 把header-nav.vue中car-panel标签里的内容剪切到car-panel.vue中的template中
  10. 在header-nav.vue的script中引入car-panel
  11. 在car-pannel.vue中的script里的computed的新建carGoodsData方法,遍历它(图片要加一个属性去控制它的大小)
  12. 在store里的index.js里定义一个方法totleCount计算购物车数量大小,totlePrice计算购物车总价
  13. 在car-pannel.vue中使用count方法拿到数量,totle方法拿到总价
  14. 在页面中判断是否显示加入购物车弹窗v-if,根据数量改变颜色

P7-购物车商品删除

  1. 在store里的index.js里创建删除购物车方法
  2. 在car-pannel.vue中调用
  3. 加入最大值的限制:在components里新建一个prompt.vue,把弹窗的代码粘贴进来
  4. 在shop.vue页面引用prompt.vue
  5. 在store里的index.js里创建一个判断是否为最大值弹窗隐藏的初值,创建一个函数判断是否为最大值
  6. 在store里的index.js里关闭最大值弹窗的方法
  7. 在prompt.vue文件创建点击事件,执行关闭弹窗的方法
  8. 创建鼠标移入弹窗显示,移出隐藏方法:car-panel.vue
  9. 在store中的index.js中执行显示和隐藏方法
  10. 在car-panel.vue中调用显示隐藏方法
  11. 在在store中的index.js中加入商品时显示

P8-购物车小球效果

  1. 在car-panel.vue和index.js里写小球
  2. 贝塞尔曲线

P9-商品详情页数据

  1. 在views里新建item.vue,页面代码样式粘过来(如果样式直接放在页面里需要改图片路径)
  2. 在router里的index.js配置路由
  3. 改shop-item.vue里的跳转路径,传递参数
  4. 在item.vue里拿到传过来的数据
  5. 在lib里新建newItemsData.js模拟数据
  6. 在item.vue里引入newItemsData.js
  7. 在item.vue里对比shop-item.vue传过来的数据和newItemsData.js中的数据,循环遍历获取item详情
  8. 在item.vue里套数据,换成双大括号的形式

P10-商品详情页交互

  1. (左侧的图片切换)在item.vue中改变imgIndex
  2. 在item.vue中切换颜色,如果想左边的图片也跟着切换就要用watch监控传过来的itemid,如果颜色改变了就重新赋值

P11-购物清单页

P12-购物清单的增删多选

P13-订单确认页商品数据

P14-收货地址及发票信息

P15-添加收货信息-上

P16-添加收货信息-下

P17-提交订单

P18-订单详情页

P19-我的订单页

P20-课后练习


Similar Posts

上一篇 Vue组件

下一篇 Eslint规则说明

Content