Créer un lecteur de musique avec Kendo UI et Angular
Ce didacticiel sur le lecteur de musique explique à quel point il est facile de commencer à utiliser les composants de Kendo UI pour Angular et à définir la structure de votre application à l'aide du composant Splitter. Les composants sont faciles à utiliser et à configurer.
Kendo UI est une bibliothèque utilisée pour créer des applications plus rapidement. Kendo UI fournit des composants d'interface utilisateur pour des bibliothèques telles que jQuery Angular React et Vue et contient de nombreux composants. pour créer des graphiques, des tableaux de données et des pages glissées.
Kendo UI est personnalisable. Il fournit un ensemble de thèmes pour Material UI, Bootstrap, etc., ainsi qu'un jeu d'icônes et une palette de couleurs. Les composants de Kendo UI sont distribués sous la forme de plusieurs packages NPM, vous n'avez donc aucune crainte à surcharger votre application de composants inutiles et à augmenter votre offre de construction.
Angular est un framework JavaScript permettant de créer une application Web. Il offre les meilleurs pratiques et outils pour faciliter le développement d'applications. Angular utilise des modèles déclaratifs, une injection de dépendance et Observables pour alimenter des applications pouvant être exécutées sur plusieurs plates-formes.
Kendo UI fournit des composants spécifiques à Angular pour faciliter le développement, et nous en utiliserons certains pour créer une musique simple. application de joueur. L’application utilisera l’API de Spotify pour obtenir des pistes et des albums, ainsi que Kendo UI pour la création de grilles et la définition d’icônes.
Pour suivre ce didacticiel, vous devez avoir une connaissance de base de Angular. Assurez-vous que Node et NPM sont installés avant de commencer.
Si vous ne connaissez pas encore Angular, veuillez suivre le tutoriel officiel ici . Vous pouvez revenir à l'article lorsque vous aurez terminé.
Nous allons créer l'application à l'aide des outils suivants:
Voici une capture d'écran de l'application que nous allons construire:
Créer une application et obtenir des clés Spotify
Pour accéder à l'API Spotify, vous devez créer une application dans le tableau de bord du développeur. Rendez-vous sur le tableau de bord du développeur et connectez-vous à l'aide de vos informations d'identification Spotify. Après vous être connecté, vous devriez voir la capture d'écran ci-dessous:
Vous pouvez voir que j'ai des applications existantes. Sinon, cliquez sur la carte vide pour créer une nouvelle application et renseignez les informations requises pour commencer.
Etant donné que nous n'allons pas configurer OAuth pour les utilisateurs de l'application, nous devrons obtenir jetons d'accès à partir de la console de développement Spotify. Les jetons expirent après quelques requêtes, mais vous pouvez toujours étendre l'application pour obtenir des jetons d'accès des utilisateurs connectés.
Pour obtenir un jeton, rendez-vous sur la console sélectionnez le noeud final que vous souhaitez. souhaitez explorer, et au bas de la page, vous devriez voir un bouton intitulé Get Token
. Cliquez sur le bouton pour obtenir un nouveau jeton et tester le noeud final pour afficher des exemples de réponses.
Copiez le jeton généré, nous l'utiliserons plus tard dans l'article. [19659019] Initialisation de l’application et installation des dépendances
Pour commencer, nous allons utiliser la CLI (interface de ligne de commande) fournie par l’équipe Angular pour initialiser notre projet.
Commencez par installer la CLI en exécutant npm installer -g @ angular / cli
. NPM est un gestionnaire de paquets utilisé pour l'installation de paquets. Il sera disponible sur votre PC si vous avez Node installé; sinon, téléchargez le nœud ici .
Pour créer un nouveau projet Angular à l'aide de la CLI, ouvrez un terminal et exécutez:
un nouveau lecteur de musique kendo --style = scss
Cette commande est utilisée pour initialiser un nouveau projet angulaire. le projet utilisera SCSS comme pré-processeur.
Ensuite, exécutez la commande suivante dans le dossier racine du projet pour installer les dépendances:
ng add @ progress / kendo-angular-buttons @ progress / kendo- disposition angulaire
Démarrez le serveur de développement angulaire en exécutant ng serve
dans un terminal situé dans le dossier racine de votre projet.
Home View
Pour commencer, nous allons définir les vues de l'application. , à partir de la page d'accueil. La page d'accueil hébergera la grille affichant les pistes, les albums et l'en-tête. Le composant App
par défaut hébergera la page d'accueil de l'application. Ouvrez le fichier app.component.html
et mettez-le à jour pour commencer:
< main >
< section >
< kendo-splitter style = " largeur : 100% ; hauteur : 100% ; 19659041] padding : 40 px 0 " >
< kendo-splitter-pane taille [19659052] = " 60% " min = " 40% " >
</ vitre séparatrice kendo >
< vitre séparatrice kendo min = " 30% " >
<! album titres liste ici - -
</ kendo-splitter-pane >
</ séparateur de kendo >
</ section >
</ main >
Premièrement, nous définissons la structure de notre application à l’aide du composant d’agencement de Kendo UI. Le package de présentation fournit un composant séparateur qui peut être utilisé pour diviser la page Web en différentes sections. Le composant splitter permet à l'utilisateur de contrôler la taille de chaque section en le faisant glisser et en le redimensionnant.
Le kendo-splitter
peut être affiché dans deux orientations: vertical
. ] et horizontal
. Il suffit de fournir une directive d'orientation
sur le composant. Dans le composant de kendo-splitter
il y a deux composants de kendo-splitter-pane
. Ils sont utilisés pour créer des colonnes similaires aux éléments .col
de Bootstrap.
Ces composants de volet sont des colonnes redimensionnables. Nous allons donc commencer par fournir la directive size
qui définit la largeur de la colonne similaire à col-8
dans Bootstrap. La directive min
est utilisée sur les colonnes redimensionnables
pour limiter le redimensionnement à une largeur minimale. Dans l'exemple ci-dessus, la première colonne ne peut pas être redimensionnée après 40%
et la deuxième 30%
.
Ensuite, nous inclurons les actifs externes de l'application. en utilisant. Nous allons utiliser les polices Montserrat
et Roboto
. Nous mettrons également à jour le fichier style.scss
afin d'inclure les feuilles de style des composants de l'interface Kendo et les styles d'application.
Ouvrez le fichier index.html
et incluez le lien vers le fichier. polices externes:
< html lang = " en " >
< head [19659000] head
< meta charset = " utf-8 " >
< titre > [19659099] KendoMusicPlayer </ titre >
< base href = " / " [ de >
< meta name = " viewport " content = " width = device- width, initial-scale = 1 " >
< link rel = " icon " [ [1945929]" link 19659051] type = " image / x-icon " href = " favicon.ico " ] >
< link href = " https://fonts.googleapis.com/css?family=Montserrat:400,700|Roboto:400,500,700,9 " rel = " feuille de style " >
</ tête >
< body >
< app-root > </ app-root >
</ body [19659031]>
</ html >
En outre, nous allons redéfinir le schéma de couleurs par défaut du thème de Kendo UI. La première étape consiste à créer un fichier pour contenir les variables. Créez un dossier dans le répertoire src / app
appelé scss-partials
et créez un fichier de partiels appelé _variables.scss
dans le dossier. Ouvrez le fichier et mettez-le à jour avec les variables suivantes:
$ accent : # 7B84FF ;
$ accent-light : # DBDDFF ;
$ border-radius : 5 px ;
$ base-text : # 525F7F ;
Ouvrez ensuite le fichier style.scss
et importez le fichier de variables et les feuilles de style des composants suivants:
@import "app / scss-partials / variables" ;
] @import "~ @ progress / kendo-theme-default / scss / button" ;
@import "~ @ progrès / kendo-theme-default / scss / splitter" [19659031];
body, html {
margin : 0 ;
padding : 0 ;
de police de caractères : 'Roboto' sans-serif ;
contexte : # F7F7F7 ;
}
corps, html, principal , section {
height : 100% ;
}
Le composant en-tête affichera le logo de l’application et très peu d’informations. Ce composant est principalement un composant d'affichage.
Exécutez la commande suivante pour créer le composant d'en-tête:
ng Générez un en-tête de composant
Ouvrez ensuite le fichier src / app / header / header.component.html
et mettez-le à jour pour qu'il ressemble au code ci-dessous:
< header >
< div class = " de marque " >
< img src = " /assets/images/logo.png " >
< h5 > Just Music </ h5 >
</ div >
< div class = ] " éléments de navigation " >
< ul class = " objets de navigation " [ >
< li class = " élément de navigation " >
< span > Musique </ span >
</ li >
</ ul >
] </ div >
</ header >
Note : Le contenu de l'image utilisé peut être trouvé ici dans le référentiel GitHub . Le logo a été obtenu à partir de https://flaticon.com .
Nous allons ensuite styliser l’en-tête. Ouvrez le fichier header.component.scss
et mettez-le à jour avec l'extrait de code ci-dessous:
@import "../ scss-partials / variables" ;
en-tête [19659031] {
display : flex ;
couleur de fond : # F7F7F7 ;
aligner les éléments : centre ;
famille de polices : 'Montserrat' sans-serif ;
marge : 0 ; [19659174] padding : 20 px 5% ;
couleur : de la fumée blanche ;
de shadow-box : [19659039] 0 1 px 2 px 0 rgba ( 0 0 0 0.1 ) ;
.brand {
flex : 1 ;
Afficher : flex ; [19659287] align-items : centre ;
img {
height : 35 px ;
de bordure rayon : 50% ;
marge-droite : 17 px ;
}
h5 {[19659297] taille de la police : 15 px ;
marge : 0 ;
transformation de texte : majuscule ;
espacement des lettres : 0.5 px ;
épaisseur de police : 600 ;
de couleur ]: $ base-text ;
}
}
.nav-items {
marge : 0 ; [19659295] .nav-item {
span {
transformation de texte : majuscule ;
taille de police : 13 px ;
police-poids : bold ;
espacement des lettres : 0,7 px ;
padding : 10 px 17 px ;
border-radius : 4 px ;
couleur de fond : $ accent-light ; [19659342] couleur : $ accent ;
frontière : rien ;
marge : 0 ;
}
}
}
}
Quelques styles pour embellir l'en-tête.
Si vous visitez http: // localhost: 4200, vous devriez voir la dernière vue de l'application. L'en-tête et le séparateur sont visibles, vous pouvez jouer avec les colonnes redimensionnables, mais n'oubliez pas de revenir et de terminer l'article. Assurez-vous que le serveur de développement angulaire est en cours d'exécution avant les tests.
Nous allons maintenant créer un service pour récupérer les dernières versions et les pistes de Spotify.
Récupération de pistes et d'albums
Pour gérer l'extraction des dernières versions et des dernières pistes, nous utiliserons un service. Il est recommandé d’utiliser les services pour les effets secondaires tels que les requêtes HTTP dans votre application. Les services sont réutilisables et peuvent facilement faire abstraction de tels processus à partir de composants, rendant ainsi les composants moins lourds et plus faciles à gérer.
Pour créer un service à l'aide de l'interface de ligne de commande, exécutez la commande suivante: ] album
Ceci devrait générer un fichier nommé album.service.ts
dans le répertoire src / app
. Ouvrez le fichier et mettez-le à jour pour inclure de nouvelles méthodes d'extraction de données:
import { Injectable } à partir de '@ angular / core' ;
import { HttpClient HttpHeaders } à partir de '@ angular / common / http' ;
de de ] environnement } de '../ environnements / environment' ;
@ Injectable ( {
a fourniIn : 'root'
} )
classe d'exportation AlbumService {
constructeur ( privé http : HttpClient ) {
obtenez en-têtes () {
retour nouveau 19659407] HttpHeaders ( { 'Type de contenu' : 'application / json' 'Autorisation' : '. $ { environment . spotifySecret } ' ] ) ;
]
getAlbums () {
renvoie ce . http . get ( 'https: // api .spotify.com / v1 / browse / new-releases? limit = 10 & pays = GB ' {
en-têtes : cette . en-têtes
} ) ;
}
getAlbumTracks ( id : chaîne ) {
retour [19659387] this . http . get ( `https://api.spotify.com/v1/albums/ $ { id } / tracks` {
en-têtes : cette . en-têtes
} ) ;
}
}
Dans un premier temps, nous allons importer le HttpClient
qui sera utilisé pour les requêtes HTTP. HttpHeaders
est utile pour créer des en-têtes pouvant être attachés aux demandes, car les points de terminaison Spotify nécessitent des en-têtes Authorization
.
La méthode [1039016] génère des en-têtes à l'aide de
HttpHeaders
classe et fournit un jeton Bearer
stocké dans le fichier environment
. Nous allons arriver à créer cette propriété spotifySecret
dans le fichier environment.ts
.
La méthode suivante est la méthode getAlbums
qui renvoie un . Http
demande observable faite au point final
. Ce noeud final renvoie les derniers albums et pistes publiés sur Spotify. Vous pouvez afficher les réponses de ce point de terminaison dans la console ici .
Enfin, la méthode getAlbumTracks
utilise un paramètre id
et appelle l'album . / $ {id} / pistes
noeud final. Ce noeud final renvoie simplement les pistes contenues dans un album.
Ensuite, nous mettrons à jour le fichier environment.ts
avec le jeton obtenu à partir de la console. Si votre jeton a expiré, vous pouvez en obtenir un nouveau ici .
Ouvrez le fichier environment.ts
et ajoutez une nouvelle propriété appelée spotifySecret
au objet:
exportation const environnement = {
production : false
spotifySecret : ''
} ;
Remplacez la chaîne de substitution
par votre jeton d'accès réel obtenu à partir de la console.
Pour utiliser la classe HttpClient
vous devez inclure l'importation HttpClientModule
. app.module.ts
. Ouvrez le fichier et ajoutez l'importation:
import { BrowserModule } à partir de '@ angular / platform-browser' ;
importé . { NgModule } de '@ angular / core' ;
...
import { HttpClientModule de ] de '@ angular / common / http' ;
@ NgModule ( {
déclarations : [
...
]
importations : [
...
HttpClientModule
]
fournisseurs : []
bootstrap : [ AppComponent ]
} )
classe de classe AppModule { de ].
Nous allons ensuite créer les composants pour afficher les derniers albums du point de terminaison des nouvelles éditions.
Création de la vue Liste des albums
Exécutez les commandes suivantes pour générer des composants pour le produit et la liste de produits: [19659023] ng générer un album de composants
Et pour la liste de produits, lancez:
ng générer la liste des albums de composants
Ouvrez le fichier album.component.html
dans le répertoire src / app / album
et mettez à jour le code ci-dessous:
< div class = " album " (cliquer) = " surAlbumClick ($ event) " >
< div [ngStyle] = " albumCover " >
< div class = " détails " >
< h3 > {{album.name}} </ h3 >
< h4 > {{getArtiste (album) .name }} </ h4 >
</ div <19659076] </ div >
</
Source link