angular8案例-网易云音乐

本文档详细介绍了使用Angular8、ngrx8、ng-zorro和material/odk技术栈,构建网易云音乐应用的过程。涵盖项目创建、模块化设计、轮播图实现(包括原点替换和触发)、歌曲数据加载、底部播放器、搜索组件、登录、个人中心、收藏、分享和注册等功能。重点讲解了自定义管道、HTTP请求、状态管理、变更检测策略以及组件和指令的创建。
摘要由CSDN通过智能技术生成

技术栈

angular8+ngrx8+ng-zorro+material/odk

ng模块化设计/proxy,http拦截器/依赖注入/自定义指令和管道、自定义表单控件/动态组件/rxjs操作符/变更检测策略/ngrx8

api:

创建项目

依赖 步骤 报错/效果
ng-zorro

npm install rxjs@^6.5.2 

只出现fsevents的WARN可忽略
npm install ng-zorro-antd --save //安装到本地

8.3.1版本需要依赖rxjs@^6.5.2

ng add ng-zorro-antd //项目中添加

? Add icon assets [ Detail: https://ng.ant.design/components/icon/en ] Yes
? Set up custom theme file [ Detail: https://ng.ant.design/docs/customize-theme/en ] Yes
? Choose your locale code: zh_CN
? Choose template to create project: blank

found 1 high severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details可忽略

ng serve --open //重启项目

页面变成ng-zorro则为成功
<button nz-button nzType="primary">button</button> 使用ng-zorro
minireset

npm install minireset.css  //安装minireset

出现fseven警告可hulue

@import '~minireset.css'; //样式文件中引用

使用minireset

页面结构、模块化设计

 

文件类型 步骤 解释
style文件

style样式文件位置:

1.手动剪切style.css黏贴到assets/styles

2.angular.json上改样式的配置,包括"projects"下“styles”和"test"下“styles”路径都要改为src/assets/styles/index.css

3.ctrl+c退出再重新npm server --open

 
module

创建module

ng g module core

 
route

ng g module app-routing --flat --module=app 

--flat 把这个文件放进了 src/app 中,而不是单独的目录中。 
--module=app 告诉 CLI 把它注册到 AppModule 的 imports 数组中。

 

轮播图数据+推荐歌单数据+入驻歌手数据

知识点:自定义pipe,get请求+传参,resolve守卫

步骤
获取数据 接口 services.module.ts common.type.ts

下载

clone API的库

安装依赖

npm install

运行

node ./app.js

export const API_CONFIG=new InjectionToken('ApiConfigToken')

@NgModule({

providers:[

 {provide:API_CONFIG,useValue

:'http://localhost:3000/'}

]

})

创建

services/data-types/common.type.ts

数据原形

export type Banner={

  targetId:number;

  url:string;

  imageUrl:string

}

export type Singer={

  id:number;

  name:string;

  picUrl:string;

  albumSize:number;

}

export type SongSheet={

  id:number;

  name:string;

  picUrl:string;

  playCount:number;

 /*tracks:Song[]*/   

}

服务home.service.ts

服务singer.service.ts

创建服务

ng g s services/home

引入

import { Banners } from './data-type/comment.type';

import { ServicesModule, API_CONFIG } from './services.module';

@Injectable({

  providedIn: ServicesModule

})

http请求

export class HomeService {

  constructor(private http:HttpClient,@Inject(API_CONFIG) private uri:string) {}

  goBanners():Observable<Banners[]>{

    return this.http.get(this.uri+'banner')

    .pipe(map((res:{banners:Banners[]})=> res.banners))

  }

  getPersonalSheetList():Observable<SongSheet[]>{

    return this.http.get(t

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值