[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

相关文章

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符