[Angular实战网易云]——7、入驻歌手

2024-02-16 13:08

本文主要是介绍[Angular实战网易云]——7、入驻歌手,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

入驻歌手

这节的效果是完成上页遗留的右侧歌手专辑名单的列表。
在服务里找到相关的API,这里有一点小问题,可能是API的版本更新问题,视频里老师的api 参数在新的里边并没有生效,所以就改了一点参数。


home.component.html

<!--右侧开始--><div class="right"><app-member-card></app-member-card><div class="settled-singer"><div class="tit"><b>入驻歌手</b></div><div class="list"><div class="card" *ngFor="let singer of singers"><div class="pic"><img [src]="singer.picUrl" [alt]="singer.name" /></div><div class="txt"><b class="ellipsis">{{ singer.name }}</b><span>专辑:{{ singer.albumSize }}</span></div></div></div></div></div>
<!--右侧结束-->

singer.service.ts

  • 在service里新建singer服务
// 定义传参类型。这里是用的新版的api,里边并没有找到cat的参数,而使用的area,并且取回的数据也并没有分页,可能是传的参数有问题,挖个坑
type SingerParams = {type?: number;area: number;
};
// 声明参数默认值
const defaultParams: SingerParams = {type: 1,area: 7,
};// 获取入驻歌手列表getEnterSingers(args: SingerParams = defaultParams): Observable<Singer[]> {const params = new HttpParams({ fromString: JSON.stringify(args) });console.log("params", params);return this.http.get(this.uri + "artist/list", { params }).pipe(map((res: { artists: Singer[] }) => res.artists));}

member-card.component.html

由于右侧上方是一个快捷登录的卡片,所以会有状态的更新及数据的渲染,为了方便维护就新建一个组件member-card。

<div class="member"><div class="login"><p>登录网易云音乐,可以享受无限收藏的乐趣,并且无限同步到手机</p><button nz-button class="btn">用户登录</button></div>
</div>

member-card.component.less

@import "../../../../../assets/styles/varibles";.member {.login {height: 126px;background: url("../../../../../assets/images/index.png") no-repeat;p {width: 205px;margin: 0 auto;padding: 16px 0;line-height: 22px;font-size: @font-size-sm;}.btn {display: block;color: @white-color;width: 100px;height: 30px;margin: 0 auto;background: url("../../../../../assets/images/index.png") no-repeat 0 -195px;text-shadow: 0 1px 0 @wy-btn-red;border-color: @error-color;}}.n-myinfo {height: 184px;padding-top: 20px;background: url("../../../../../assets/images/index.png") no-repeat 0 -270px;.f-cb {.head {position: relative;float: left;display: block;width: 80px;height: 80px;margin-left: 20px;padding: 2px;background: @white-color;border: 1px solid #dadada;}.info {float: left;width: 115px;margin-left: 12px;.lv {margin: 5px 0 10px 0;.u-icn2 {display: inline-block;overflow: hidden;vertical-align: middle;background: url("../../../../../assets/images/icon2.png") no-repeat0 9999px;}.u-lv {height: 17px;padding-left: 25px;line-height: 18px;color: #999;font-weight: bold;font-style: italic;background-position: -130px -64px;.lvright {float: right;width: 8px;height: 17px;background-position: -192px -64px;}}}}}.dny {margin: 12px 0 0 20px;color: #666;li {float: left;height: 40px;padding: 0 18px;border-right: 1px solid #e4e4e4;&.fst {padding-left: 0;}&.lst {padding-right: 0;border-right: none;}strong {display: block;max-width: 40px;font-size: 20px;font-weight: normal;}span {margin-left: 2px;}}}}
}

效果

总结

在调用api的时候,事先定义好来回的数据类型,可以起到优化的效果,减少内部判断类型。对于有状态更新的dom,要考虑是否要方便维护,从而决定是否单独提取出新的组件页。

这篇关于[Angular实战网易云]——7、入驻歌手的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714615

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript