Fermer

juin 25, 2019

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:

. 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:

 Le tableau de bord du développeur. Les applications existantes seront listées.

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.

 obtenir un jeton

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.

 dernière vue de l'application avec en-tête et séparateur visibles

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