使用Vue仿一个网易云网站

news/2024/5/14 16:10:22/文章来源:https://blog.csdn.net/lzl980111/article/details/110931565

使用Vue仿一个网易云网站

    • 小记
    • 预期
    • 进程记录
      • 12-09
      • 12-14
      • 12-17
      • 12-18
    • 源码
    • 组件分析
      • Views
        • Songs
          • TopTitle
          • Carousel
          • PopMuiRec
            • TitlePopRec
            • MusicList
            • MusicItem
          • RecommendSinger
            • RecommendSingerShow
            • RecommendSingerList
            • RecommendSingerItem
        • SongList
          • TargetSongShow
          • SongListShow
        • NewDisc
          • NewDiscFrame
          • NewDiscShow
          • NewDiscList
          • NewDiscItem

小记

预期

在这里插入图片描述

进程记录

12-09

目前实现的效果如下
在这里插入图片描述
项目架构初步搭建起来了,记录组件拆分
在这里插入图片描述

12-14

在封装首页的一个类似于轮播图的组件,点击左右可切换
在这里插入图片描述
然后它这个是有一定的过度效果的,首先想起的是Animate(),淘到几篇讲Vue的Animate的博客:

https://blog.csdn.net/qq_40314318/article/details/104641850?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control

文档:https://animate.style/

12-17

记录一下
在这里插入图片描述
组件实现的心路历程

  • 首先获取数据还是 写在 song 中
  • 数据传递:song.vue->NewDiscShow->NewDiscList(此时须将完整数据拆解成4部分供NewDiscList使用)->NewDiscItem

在NewDiscShow传NewDiscList时遇到了一些问题:
props中的数据(动态的)在created和mounted中能获取到嘛?
我试了一下是:都是有时候可以获取到,但是大部分时间是获取不到的

解决方法:

考虑使用watch实现
上一下代码段

<script>
export default {name:"NewDiscShow",components:{NewDiscFrame,NewDiscItem,NewDiscList},methods:{},props:{DiscData:Array},data(){return {DiscDataOne:[],DiscDataTwo:[],DiscDataThree:[],DiscDataFour:[]}},watch:{DiscData: function(newVal,oldVal){for(var i=0;i<4;i++){this.DiscDataOne.push(newVal[i]);}}},computed:{}
}
</script>

这里找到一篇博客可以参考一下:
https://www.cnblogs.com/taohuaya/p/11413178.html

下面我计划做一下查询功能
对项目做一下防抖节流优化:
上代码:

// 防抖
export function Debounce(fn, delay) {var delay = delay || 200;var timer;return function () {var th = this;var args = arguments;if (timer) {clearTimeout(timer);}timer = setTimeout(function () {timer = null;fn.apply(th, args);}, delay);};
}
// 节流
export function Throttle(fn, interval) {var last;var timer;var interval = interval || 200;return function () {var th = this;var args = arguments;var now = +new Date();if (last && now - last < interval) {clearTimeout(timer);timer = setTimeout(function () {last = now;fn.apply(th, args);}, interval);} else {last = now;fn.apply(th, args);}}
}

应用:

<template><div><div class="toptitle-one"><div><ul><a href="#"><li v-for="(item,index) in title" :key="index" class="title-item" @click="ChangeRouter(index)" :class="{itemactive:index===currentIndex}">{{item.title}}</li></a></ul><div class="search"><el-input placeholder="请输入内容" v-model="input" clearable></el-input><el-button icon="el-icon-search" circle></el-button></div></div></div><div class="toptitle-two"><div><ul><a href="#"></a></ul></div></div></div>
</template>
<script>
import {Debounce,Throttle} from 'assets/js/public'
export default {name:'TopTitle',props:{},data(){return {currentIndex:-1,title:[{title:'发现音乐',path:'/songs',child:[{title:'推荐',path:'/recommend'},{title:'排行榜',path:'/recommend'},{title:'歌单',path:'/recommend'},{title:'主播电台',path:'/recommend'}]},{title:'我的音乐',path:'/mysongs'},{title:'朋友',path:'/friends'},{title:'商城',path:'/mysongs'},{title:'音乐人',path:'/mysongs'},{title:'下载客户端',path:'/mysongs'}],input:""}},watch:{input:Debounce(function(newVal,oldVal){console.log(newVal)},200)},methods:{ChangeRouter(index){this.currentIndex=index// this.$emit('ChangeRouter',index)this.$router.replace(this.title[index].path)}},computed:{isActive(){return this.$route.path.indexOf(this.path)!=-1}}
}
</script>

查询的input绑定了input数据,对input采用实时监听watch,在其监听处做防抖处理

12-18

今天在做搜索功能模块,发现每个页面都会用到这个搜索功能模块,而且输入的搜索内容在每个页面都会保留,我想到将它交给vuex管理。记录一下实现过程:

  • 首先配置下vuex
1.安装vuexnpm install vuex
2.配置vuex1)import import Vue from 'vue'import Vuex from 'vuex'2)Vue.useVue.use(Vuex)3)使用Vuexconst store=new Vuex.Store({state:{keywords:"测试keywords"},mutations:{ChangeKeyWords(state,payload){state.keywords=payload.keywords}},getters:{},actions:{},modules:{}})4)导出storeexport default store
3.引入并使用storeimport store from './store/index'new Vue({el: '#app',router,render: h => h(App),store:store})

验证一下vuex配置的有效性
在某一视图的created属性中:

        console.log("测试")console.log(this.$store.state)

输出结果:
在这里插入图片描述
成功

接下来实现将搜索框中的内容赋值到vuex的keywords中

我们直接跑到 TopTitle.vue 中,封装好了就是省事儿,对搜索加一个监听,实现修改vuex中的keywords

上代码:

        search(){//查询:跳转路由,带参;修改vuexthis.$store.commit('ChangeKeyWords',{keywords:this.input})this.$router.push({path:'/search',query: {keywords:this.input}})}

上面的路由跳转时带参的,起始完全没有必要(在做的时候一开始没想着用vuex,做了做发现每次输入框中的内容都会消失掉,非常不合理,才想到引入vuex)

然后vuex中的源码对应上面(翻上去看上面,这里不再罗列)

修改数据使用		mutations	和this.$store.commit('ChangeKeyWords',{keywords:this.input})带参写法:mutations:{ChangeKeyWords(state,payload){state.keywords=payload.keywords}},
动态(异步)数据使用actions

源码

https://github.com/lzlv587/MusicPlayer

组件分析

Views

Songs

在这里插入图片描述

TopTitle

所有界面顶部的导航栏,控制路由

Carousel

轮播图

PopMuiRec

首页热门推荐部分,这个组件目前做的并不好,在最开始设计的时候考虑的太浅;总结如下几个不足:

1、在传参时跳过了MusicList直接跟MusicItem交互

2、TitlePopRec这个组件可以舍弃

3、应当同下面的组件似的建一个 “show” 组件,组件规范统一

在这里插入图片描述

TitlePopRec

其实这个组件没必要

MusicList

专辑列表的框架

MusicItem

专辑卡片单元

RecommendSinger

首页入驻歌手部分

在这里插入图片描述

RecommendSingerShow

入驻歌手部分的主体

RecommendSingerList

入驻歌手部分列表的框架

RecommendSingerItem

入驻歌手部分的单元

SongList

展示歌单详情页面

TargetSongShow

展示歌单的基本信息

SongListShow

展示歌单的歌曲信息

NewDisc

新碟上市组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rtsE2dep-1608174307842)(C:\Users\10651\AppData\Roaming\Typora\typora-user-images\image-20201217110055327.png)]

首先它是有一个类似轮播图的框架

我先去封装了一个轮播图框架

NewDiscFrame

新碟上市轮播框架

接着我又对这个组件进行拆解

在这里插入图片描述

NewDiscShow

用于完整组装新碟上市组件

NewDiscList

列表

NewDiscItem

单项

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题...

摘要  前面的文章中&#xff0c;我们采用“曲线救国”的方式解决实现Form认证后无法再用SharePoint Designer编辑网站的问题&#xff0c;还甚至说Microsoft公司并未考虑这个问题。  这两天在国外的网上闲逛&#xff0c;偶然看到一篇关于这个问题文章&#xff0c;原来这个问…

用VSTS进行网站压力测试

VSTS提供了一个丰富、强大的工具平台&#xff0c;融合了软件开发领域的各个角色&#xff0c;涵盖软件开发生命周期的各个阶段&#xff0c;包括设计&#xff0c;开发&#xff0c;测试&#xff0c;管理&#xff0c;而这一整套构件的融会贯通&#xff0c;让它可以有效地改善软件开…

小问题 小技巧 :网站路径问题

网站的开发&#xff0c;我总会遇到路径的问题&#xff0c;而且有时还搞不明白。总是自己经过调试之后才知道应用什么路径&#xff0c;如何去取路径。面对这半知半解的 问题&#xff0c;我准备写一写这些小问题&#xff0c;也好给自己长个记性。 1、先从C#中提供的几个方法说起吧…

IIS网站服务器性能优化指南

Windows Server自带的互联网信息服务器&#xff08;Internet Information Server&#xff0c;IIS&#xff09;是架设网站服务器的常用工具&#xff0c;它是一个既简单而又麻烦的东西&#xff0c;新手都可以使用IIS架设一个像模像样的Web站点来&#xff0c;但配置、优化IIS的性能…

达达兔网站服务器是哪里,达达兔影院网官网

达达兔是一款掌上的影院&#xff0c;你可以在这里收看到不同的影视作品&#xff0c;更多的影视作品离线在线都可以看&#xff0c;经典的&#xff0c;新颖的&#xff0c;喜爱看电影追剧的朋友绝对不能错过的一款app&#xff0c;全网优质的影视轻松观看&#xff0c;享受精彩的剧集…

网站设计风格

它总结了一些当前网站设计风格的发展趋势。但是我得先提一句&#xff0c;它说的都是西方网站&#xff0c;未必适合我们中国网站的情况和中国网民的审美观。如果能给你一点点参考和借鉴的价值&#xff0c;就足够了。 我很高兴看到2006年的网站设计比以往任何时候都要好。…

网站建设技术方案_企业网站建设方案

郑州企业网站建设价格低21世纪是信息化的时代&#xff0c;在信息时代生存的公司的基本规则就是要符合时代的要求。网站的建设对于现代企业而言&#xff0c;其重要性不言而喻&#xff0c;有时&#xff0c;网络经营的好坏直接关系企业的生存及发展。随着企业对网站的需求逐渐增加…

php table获取内容和修改内容_百度收录的网站内容可以修改吗?

相信很多SEOer都曾经遇到过这种情况&#xff0c;在进行网站SEO优化时&#xff0c;发现内容不是很准确&#xff0c;想要进行修改&#xff0c;但是又担心修改被百度收录过的网站内容对网站内容有影响。今天&#xff0c;小编就和各位SEOer分享修改百度收录后的网站内容对网站是否有…

百度搜索引擎优化指南3.0_「搜索引擎优化」理解百度搜索引擎原理可以让站长网站实现快速引流...

第一、百度搜索引擎优化原理第二、百度SEO工作原理百度搜索引擎首先是先抓取我们的网站的页面&#xff0c;接着是收录我们的网站页面&#xff0c;最后是从储存在数据库上的网站页面按页面的友好度进行排名。[搜索引擎优化]理解百度搜索引擎原理可以让站长网站实现快速引流第三、…

网站建设需求

网站建设需要的地方&#xff1a; 对程序员而言&#xff0c;建立一个属于自己个人的网站需要哪些东西呢&#xff1f; 服务器或者虚拟主机&#xff0c; 域名注册&#xff0c; 程序代码&#xff08;这些自己搞定&#xff09; 服务器与域名这两项是需要花费的&#xff0c;这些…

程序视频卡php,php做视频网站服务器很卡怎么办??

环境&#xff1a;php5.3.9Apache 22mysql5.6.xwindows使用做视频网站的时候碰到的几个问题(本地环境测试)&#xff1a;A. 几十个视频。通过 canvas 截取视频第一帧做封面。// 视频源列表var vSrcList [src1 , src2 , src3 ....];// 队列方式截取视频第一帧(如果不采取队列方式…

定时检查网站是否运行正常,自动重启TOMCAT的简单方法

为什么80%的码农都做不了架构师&#xff1f;>>> 定时检查网站是否运行正常&#xff0c;并且自动重启的简单方法 1、查看tomcat 是否启动 ps -ef | grep tomcat 2、杀死 tomcat kill -9 pid (pid为进程号) 3、查找tomcat进程 ps aux | grep tomcat | grep -v grep…

怎样用photoshop制作网站横条广告?

本Photoshop实例教程为大家带来网站横条广告的制作教程&#xff0c;制作过程中主要应用渐变、蒙板、钢笔等工具&#xff0c;希望大家喜欢!先看效果&#xff1a;步骤/方法 打开Photoshop CS3软件&#xff0c;执行菜单&#xff1a;“文件”&#xff0f;“新建”&#xff08;快捷键…

WordPress的SEO技术

原文&#xff1a;http://blog.wpjam.com/article/wordpress-seo/ 文章目录[隐藏] 内容为王页面优化 标题链接&#xff08;URL&#xff09;Meta 标签语义化H1 H2 H3 等标签的使用图片优化链接建设 向搜索引擎主动提交Sitemap站内链接优化获取反向链接WordPress SEO 总结Powered …

Windows Azure 网站 (WAWS) 中的服务器端包含 (SSI)

&#xfeff;&#xfeff;编辑人员注释&#xff1a;本文章由 Windows Azure 网站团队的项目经理Erez Benari 撰写。 Windows Azure 网站客户普遍关心的一个问题是关于我们对服务器端包含(Server Side Includes, SSI) 的支持&#xff0c;以及服务器端包含是否可以与不同的扩展名…

《大型网站技术架构》读书笔记[2] - 架构的模式

《大型网站技术架构》读书笔记 - 架构的模式 大CC上周写的读书笔记记录的是网络的升级路线&#xff0c;其中用到的各种技术手段只是点到即止&#xff08;《大型网站技术架构》读书笔记 - 网站的技术升级路线&#xff09;&#xff1b;今天写的第二篇笔记&#xff0c;讨论架构的模…

linuxweb服务器 网站,Linux web服务器

linux: web服务器(一)1卸载原来已经存在的httpd2、插入光盘&#xff1a;Benet 5.0所需软件\linux安全及高级应用\rhel-server-6.5-x86_64-dvd.iso3、源码编译安装httpd&#xff0c;下图为&#xff1a; 1)解包 2)配置 注意&#xff1a;make && make install 我打在…

切勿用搜索引擎搜索填报志愿网页_可怕!百度又惹众怒,这回是高考志愿填报假网站...

正值考生填报高考志愿的关键时期25日&#xff0c;新华社的一则消息引发社会广泛关注题为&#xff1a;考生切勿用搜索引擎搜索填报志愿网页不明情况的“吃瓜群众”顿时“懵逼”用搜索引擎不是更快捷方便的获取信息吗&#xff1f;这到底是咋回事叻&#xff1f;发哥今天就跟你们絮…

大型网站图片服务器架构的演进(转)

在主流的Web站点中&#xff0c;图片往往是不可或缺的页面元素&#xff0c;尤其在大型网站中&#xff0c;几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中&#xff0c;也会历经很多曲折甚至是血泪教训&#xff08;尤其是早期规划不足&am…

网站接下来的打算

2019独角兽企业重金招聘Python工程师标准>>> 由于网站是寄生在别人的网站之上&#xff0c;而且要借用别人服务器&#xff0c;安装一个虚拟机来运行服务。各种问题&#xff0c;纷至沓来。才不到一星期&#xff0c;已经显示出各种问题了。比如平常配置的端口会走样&am…