仿蘑菇街项目

引言

仿蘑菇街的Vue.js项目是我学习vue.js做的第一个项目,今天来重温一下项目实现的功能,记录一下,方便以后查看。首先需要创建项目,本项目采用cli-3脚手架创建项目,采用默认安装模式,没有安装vue-router和axios等组件,后续项目需要在安装。项目底部导航栏区域主要包括首页,分类,购物车和我的四个模块,点击对应的标题就会跳转到对应的界面中,展示对应的模块内容。下面即将切入正题,展示各个模块实现的功能以及对应的代码。图1为页面默认显示的内容。

 1.底部导航栏

根据图1可以看出,底部导航栏包括4部分内容,为了方便调用,将其封装成一个独立的组件。点击不同的标签显示不同的页面内容,这里需要用到路由的功能,所以由于在创建项目的时候,没有安装路由,而本项目中需要使用vue-router,所以下载安装vue-router,vue-router的安装自行vue-router官网查看。路由设置详见下面的代码段:

{path:'/home',component: Home},{path:'/category',component: Category},{path: '/cart',component: Cart},{path: '/profile',component: Profile}

路由设置好后,开始对底部导航栏的图标和文字进行处理,底部导航栏设置为tabbar,在tabbar中设置一个插槽,插槽中包括4个tabbaritem项,每个tabbaritem里又包括3个插槽,一个插槽放置文字,一个插槽放置无颜色图标,一个插槽放置有颜色图标。默认显示无颜色字体和图标,当鼠标点击对应的文字时,变换文字和图标颜色。这里就需要使用v-if和v-else来实现。代码如下:

<div v-if="!isActive"><slot name="icon-img"></slot></div>
<div v-else><slot name="icon-img-active"></slot></div>
<div :class="{active:isActive}"><slot name="icon-text"></slot></div>

这样就实现了底部导航栏的功能。按照底部导航栏的顺序,首先是首页内容

2.首页

根据图1可以看出,页面默认显示首页内容,所以先创建首页内容,安装好路由后在设置路由默认显示首页内容,就需要把路由重定向到/home组件中,具体代码如下:

{path:'',redirect: '/home'}

这样就可以实现默认显示首页内容了。下面切入正题,讲解首页内容的具体实现。

1.1 首页顶部导航栏

根据图1可以看出,首页顶部是一个粉色导航区域,为了方便后面几个组件中的复用,将粉色导航区域抽离成一个组件。哪里需要,就在哪里直接引入即可。通常情况下,导航栏应该分成3个部分,左,中,右。本例中也将导航栏分成3个部分,左,中,右三个部分,分别对应3个插槽,需要替换对应部分的内容就在各自对应的插槽替换即可。插槽部分对应的代码如下:

<template><div class="nav-bar"><div class="left"><slot name="left"></slot></div><div class="center"><slot name="center"></slot></div><div class="right"><slot name="right"></slot></div></div>
</template>

注意,在插槽slot外部包装了div,这是因为在组件中引用的时候是在div中引用的,所以插槽外部也包装了div。根据图1可以看出,首页的导航栏只需替换中间插槽的内容即可。由此实现了首页导航栏。首先在首页中引入导航栏

import NavBar from "../../components/common/navbar/NavBar"

在首页中替换中间内容

<nav-bar class="nav-bar"><div slot="center">购物街</div></nav-bar>


1.2 轮播图

根据图1的布局,可以看出粉色导航栏下面是一个轮播图,轮播图也封装成了一个独立组件,在这里直接引入

//引入Swiper组件import {Swiper,SwiperItem} from '../../../components/common/swiper'

1.3 推荐数据

轮播图下面是4张小图片,下面一行文字对应上面的小图片,此处需要请求数据,安装axios,具体安装教程详见官方文档,这里使用了请求拦截。

 图2 请求推荐数据

图2中红框框起来的部分就是请求的推荐数据内容。图3是对请求过来的内容进行使用

图3 推荐数据 展示

1.4 本周流行

本周流行部分就是一张图片,将图片引入即可,这一模块比较简单。

1.5 商品列表

 商品展示部分是一个重头戏,展现出来的效果见图4

 图4 商品列表

商品列表部分也包括了一个小导航栏,包括3个内容,流行,新款和精选。这是因为请求到的数据就是这三部分内容,将其渲染到页面中。默认显示的是流行的内容,点击新款和精选就会显示对应页面的内容。在data中设置默认数据

 

 点击对应的按钮,就会改变数据,在methods中定义点击事件

 

通过调用不同的数据,显示不同的页面内容,在created中调用methods中定义的方法

 通过上述内容,就可以实现商品数据的显示了。首页内容就显示完成了。由于普通的滚动事件在不同的终端查看可能会存在卡顿现象,所以,项目中引入了better-scroll插件来实现页面平滑滚动效果。better-scroll的具体使用可以查看相关文档,这里做一些简要说明。

要想使用better-scroll,需要有一个父盒子包装一个子盒子,主要包括这两部分可以实现滚动操作。代码如下:

 注意,必选是父盒子.wrapper和子盒子.content,否则better-scroll不起作用。

better-scroll包括一些值,可以监听滚动到底部以及监听滚动位置

mounted(){//1.创建Bscroll对象this.scroll = new Bscroll(this.$refs.wrapper,{probeType: this.probeType,pullUpLoad: this.pullUpLoad,click: true})//2.监听滚动位置,当probeType为2或为3时,才会监听滚动位置 当probeType为其他值时不需要监听if(this.probeType===2 || this.probeType===3){this.scroll.on('scroll',position=>{// console.log(position);this.$emit('scroll',position)})}//3.监听scroll滚动到底部if(this.pullUpLoad){//当pullUpLoad为真时,监听滚动到底部this.scroll.on('pullingUp',()=>{this.$emit('pullingUp')})}}

其他详细内容可在github中查阅。这里监听滚动位置是因为有返回顶部按钮,当滚动到一定位置时,返回到顶部按钮显示出来,当点击返回到顶部的按钮时,就可以滚动到顶部。图5显示了返回到顶部的按钮。

图5 返回顶部按钮

代码如下,由于已经安装了better-scroll,以及设置了对应的值,所以这里可以使用scrollTo方法使页面返回到顶部。scrollTo(参数1,参数2,参数3),其中参数1是x坐标,参数2是y坐标,由于是返回到顶部,所以y坐标要为0,参数1和参数2就设置为0,参数3设置为500就是返回到顶部所需的时间,一共是500ms,设置一个过渡效果。

 新款显示的内容如图6所示

图6 新款内容

精选内容如图7所示

 

 图7 精选内容

1.6 详情页内容

当点击商品列表中的某一个商品时,会跳转到对应的商品详情页面中。如图8所示

图8 商品详情页面

根据图8,可以清楚的看出商品详情界面的布局,上面也包括一个导航栏,导航栏下面包括一个轮播图,由于前面已经封装了对应的组件,这里直接引入使用即可。详情页的内容,除了顶部与底部的导航栏不需要请求数据外,页面中的其他内容均需要请求数据,进行展示。详情页的难点在于顶部导航栏与下面显示内容的联动效果,当点击导航栏上的某一个标签,下面就会跳转到对应内容,下面内容滚动到哪里,上面的导航栏也会跟着变化,而且当页面滚动到某一个位置,返回顶部的图标会显示出来,具体内容如图9所示

图9 联动效果

首先监听滚动的位置,显示返回顶部的图标,滚动到某个位置,上面的导航栏跟着变化,实现联动效果

当点击返回到顶部按钮后,就实现返回顶部的功能。

 

 点击对应的导航栏,滚动到对应的位置。

 当在详情页中点击加入购物车后,就可以在购物车界面中看到添加的对应商品信息,如图10所示

 图10 购物车界面

2.购物车界面

购物车界面用到了vuex状态管理器,所以需要安装vuex,具体安装过程详见官网。由图10可知,购物车界面也包括顶部导航栏和底部导航栏。直接引入对应的组件即可。vuex中存储商品详情页中点击加入购物车商品的内容,顶部导航栏获取详情页中添加购物车商品的数量,注意,重复商品只记一件,但是在商品显示区乘以的个数那里显示具体加入了几件商品。如图11所示

 

 图11 添加商品数量

由图11可以看出,去计算后面的数量和顶部导航栏的数量相等,重复商品只记一件,商品右下角x号后面则是添加了几件,就显示几件,合计的总价格也是所有商品的总价格。

3.分类

 图12 分类

商品分类界面需要请求对应的额分类数据,进行布局展示即可。

4.我的

由于我的界面没有对应的接口数据,所以这里只对其进行了布局展示,并没有实现对应的功能。我的界面如图13所示

 图13 我的界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352217.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

高仿蘑菇街欢迎页

####蘑菇街欢迎页 ####高仿效果 这里这里…Demo下载地址 #####前言 本文将介绍如何对蘑菇街欢迎页效果进行分析&#xff0c;拆分&#xff0c;并一步步实现1个高仿版本&#xff0c;最重要的设计思路包括以下2点&#xff1a; 1.ViewPager切换时&#xff0c;通过offset偏移量动…

美丽说蘑菇街首页效果(UITableView和UIScrollerView联动)

作为一名菜鸟iOS开发程序员&#xff0c;第一次写文章&#xff0c;有点小激动&#xff01;进入正题&#xff0c;最近项目中有个需求&#xff0c;类似美丽说蘑菇街首页效果&#xff0c;在网上找了一些资料后自己研究了下终于搞定了&#xff01; 先看效果&#xff1a; 接下来详细…

【Linux】Nginx 优化与防盗链

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Nginx 优化与防盗链 一、隐藏版本号方法一&#xff1a;修改配置文件方式方法二&#xff1a;修改源码文件&#xff0c;重新编译安装 二、修改用户与组三、缓存时间四、日志切割…

操作系统的最强入门科普(Unix/Linux篇)

今天这篇文章&#xff0c;我们来聊聊操作系统&#xff08;Operating System&#xff09;。 说到操作系统&#xff0c;大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑&#xff0c;使用的是windows和macOS系统&#xff1b;用手机、平板电脑&#xff0c;则是a…

PDF文件无法编辑怎么办

PDF文件无法编辑是因为设置了编辑限制&#xff0c;只要在设置密码的地方输入密码把密码取消就可以自由编辑文件了。如果不知道密码或者忘记了密码&#xff0c;只能使用第三方的解密软件把密码解除掉&#xff0c;现在有很多PDF的辅助软件&#xff0c;可以在网上搜到很多&#xf…

SpringBoot实现服务器PDF文件的下载和预览功能

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c;我会取其精华去其糟粕 &#x1f345;java自学的学习…

PDF文件不能编辑,有什么办法能够解决?

PDF文件打开之后发现不能编辑&#xff0c;很有可能是因为PDF文件设置了限制编辑。一般来说&#xff0c;想要解决问题&#xff0c;我们只需要将PDF编辑限制解除就可以了 但是大家有时候可能是不知道PDF密码的&#xff0c;那么在不知道PDF密码的情况下&#xff0c;如何解决不能编…

java利用itext编辑pdf

最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现 . itext的官网是:http://www.itextpdf.com/ 代码如下: Java代码 /** * authory kingviker * time : 2012-12-12 */ import java.io.FileOutputStream; import java.io.IOExcepti…

java设置pdf不可编辑_禁止编辑,但允许在Java iText / PDF中进行页面提取

我正在使用iText生成PDF文件 . 我想禁止编辑PDF&#xff0c;但允许读者提取页面 . 这是我设置加密的代码&#xff1a; writer.setEncryption(null, null, 0xffffffff, PdfWriter.STANDARD_ENCRYPTION_128); 第三个参数指定权限 . 我正在使用0xffffffff而不是单独的iText标志ALL…

HTML5 PDF 编辑,pdf.js的使用与改造

一、前期准备 1.1 需求描述 1.想让各个浏览器能显示服务器存放的PDF文件(主要是手机的浏览器) 2.想让项目结构如下:lib目录存放pdf.js等依赖文件,src存放要显示的pdf文件 想要的项目结构 3.这样我就可以将这个项目放到我网站的任何目录下,比如放到PDF或者别的文件夹下 PDF目…

如何免费编辑PDF文档?

我们都知道PDF文档不像Word文档一样可以直接编辑修改&#xff0c;想要编辑PDF文档&#xff0c;我们就需要借助专业的PDF编辑器。今天小编就给大家推荐一款可以免费编辑PDF文档的工具“金闪PDF编辑器”。 金闪PDF编辑器是一款功能齐全的强大的PDF工具&#xff0c;目前有移动端安…

PDF文件编辑并去除水印

我相信很多博友肯定被这个问题烦恼过&#xff0c;并且当初我自己也因为这个事情熬的掉了好几根头发&#xff0c;这件事就是PDF文件编辑过后会留下很严重的水印&#xff0c;并且无法除去&#xff0c;想去除就得花钱购买会员&#xff0c;想白嫖都没有办法&#xff0c;接下来我就为…

怎么编辑PDF文件?分享三种好用的编辑方法

怎么编辑PDF文件中的内容呢&#xff1f;大家在日常使用PDF文件的过程中肯定遇到过需要编辑文件的需求&#xff0c;因为我们不能保证每个文件中的内容都不会出错&#xff0c;问题是PDF文件不容易改动&#xff0c;我们怎么做才能够编辑PDF文件呢&#xff1f;不用着急&#xff0c;…

如何编辑PDF文件?编辑PDF的方法有哪些?

PDF文件是一种广泛使用的文档格式&#xff0c;通常用于共享和阅读文档&#xff0c;如电子书、报告、合同等。但是&#xff0c;有时候您可能需要编辑PDF文件。编辑PDF文件可能听起来很困难&#xff0c;但是有许多方法可以轻松地编辑PDF文件。本文将探讨几种最常见的编辑PDF文件的…

PDF编辑:Adobe Acrobat X Pro 官方原版下载+中文汉化补丁

Adobe在10月份发布了新一代Acrobat X软件家族&#xff0c;其中包括PDF创建编辑软件Acrobat X Pro,因为Acrobat X Pro是Acrobat Pro 9.0的后续版本&#xff0c;故也有人称其为Acrobat Pro 10.0。虽然Aodbe Acrobat X Pro正式版发布许久了&#xff0c;但Acrobat X Pro 简体中文版…

Windows系统下的PDF编辑工具软件-PDF编辑器下载

PDF编辑器是一款Windows系统下的PDF编辑工具软件&#xff0c;它支持修改编辑PDF文件并向PDF添加文字、擦除内容、插入图片、绘制直线、加椭圆框、加矩形框和旋转PDF等功能。PDF编辑器可以让您在PDF文件的任何位置添加文字、删除内容、加图片或进行其他编辑&#xff0c;简单的如…

JVM学习笔记二

1. JVM内存参数 要求 熟悉常见的 JVM 参数&#xff0c;尤其和大小相关的 堆内存&#xff0c;按大小设置 解释&#xff1a; -Xms 最小堆内存&#xff08;包括新生代和老年代&#xff09; -Xmx 最大堆内存&#xff08;包括新生代和老年代&#xff09; 通常建议将 -Xms 与 -…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接&#xff1a;198. 打家劫舍&#xff08;中等&#xff09; 1.方法 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&am…

go 并发/并行/协程/sync锁读写锁

下面来介绍几个概念&#xff1a; 进程/线程&#xff1a; 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体&#xff0c;是 CPU 调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一…

易点易动打通财务系统,打破数据孤岛,实现固定资产的账实一致

固定资产管理涉及资产的采购、验收、账务处理、折旧管理等全流程,同时也牵涉到财务系统和资产系统两大信息孤岛。这两个系统之间数据不互通,导致资产的账实信息无法同步,无法真正实现资产管理的账实一致。 固定资产系统作为固定资产管理的业务系统,负责资产的采购申请、验收入…