Fermer

février 27, 2020

Comment créer un gestionnaire de musique avec Nuxt.js et Express.js


Cet article présente comment Multer rationalise le processus de gestion des téléchargements de fichiers. Il présente également comment utiliser Mongoose pour interagir avec notre base de données en créant une application de gestion de la musique en utilisant Express.js aux côtés de Multer pour le téléchargement de musique et Nuxt.js (framework Vue) pour notre interface.

Gestion des ressources multimédias numériques telles que l'audio et la vidéo dans votre application peut être délicate en raison des considérations qui doivent être prises côté serveur (par exemple, la mise en réseau, le stockage et la nature asynchrone de la gestion des téléchargements de fichiers). Cependant, nous pouvons utiliser des bibliothèques comme Multer et Express.js pour simplifier notre flux de travail sur le backend tout en utilisant Nuxt.js (framework Vue) pour développer les interactions frontales.

Chaque fois qu'un client Web télécharge un fichier sur un serveur, il est généralement soumis via un formulaire et encodé en multipart / form-data . Multer est un middleware pour Express.js et Node.js qui facilite la gestion de ces soi-disant multipart / form-data chaque fois que vos utilisateurs téléchargent des fichiers. Dans ce didacticiel, je vais vous expliquer comment créer une application de gestion de la musique en utilisant Express.js avec Multer pour télécharger de la musique et Nuxt.js (framework Vue) pour notre interface.

Prérequis

  • Familiarité avec HTML, CSS, et JavaScript (ES6 +);
  • Node.js, npm et MongoDB installés sur votre machine de développement;
  • Code VS ou éditeur de code de votre choix;
  • Connaissances de base d'Express.js.

Service principal

Commençons par créer un répertoire pour notre projet en naviguant dans le répertoire et en émettant npm init -y sur votre terminal pour créer un fichier package.json qui gère toutes les dépendances de notre application.

 mkdir serverside && cd serverside
npm init -y

Ensuite, installez multer express et les autres dépendances nécessaires pour Bootstrap une application Express.js.

 npm install express multer nodemon mongoose cors morgan body-parser - -enregistrer

Ensuite, créez un fichier index.js :

 touchez index.js

Ensuite, dans le fichier index.js nous initialiserons tous les modules, créerons une application Express.js et créerons un serveur pour la connexion aux navigateurs:

 const express = require (" Express");
const PORT = process.env.PORT || 4000;
const morgan = require ("morgan");
const cors = require ("cors");
const bodyParser = require ("body-parser");
const mongoose = require ("mangouste");
const config = require ("./ config / db");
const app = express ();
// configurer la base de données et la mangouste
mongoose.set ("useCreateIndex", true);
mangouste
  .connect (config.database, {useNewUrlParser: true})
  .then (() => {
    console.log ("La base de données est connectée");
  })
  .catch (err => {
    console.log ({database_error: err});
  });
// La configuration de db se termine ici
// enregistrement des cors
app.use (cors ());
// configurer l'analyseur de corps
app.use (bodyParser.urlencoded ({extended: false}));
app.use (bodyParser.json ());
// configurer l'analyseur de corps se termine ici
app.use (morgan ("dev")); // configire morgan
// définir la première route
app.get ("/", (req, res) => {
  res.json ("Hola MEVN devs ... Assemble");
});
app.listen (PORT, () => {
  console.log (`L'application fonctionne sur $ {PORT}`);
});

Nous introduisons tout d'abord Express.js dans le projet, puis définissons un port sur lequel notre application sera exécutée. Ensuite, nous introduisons les dépendances body-parser morgan mongoose et cors .

Nous enregistrons ensuite l'express par exemple dans une variable appelée app . Nous pouvons utiliser l'instance app pour configurer le middleware dans notre application, tout comme nous avons configuré le middleware cors . Nous utilisons également l'instance app pour configurer la route racine qui s'exécutera dans le port que nous avons défini.

Créons maintenant un dossier / config pour notre base de données config et multer config:

 mkdir config et cd config
toucher multer.js && toucher db.js

Ouvrez ensuite config / db.js et ajoutez le code suivant pour configurer notre base de données:

 module.exports = {
  base de données: "mongodb: // localhost: 27017 /",
  secret: "mot de passe"
};

(Il s'agit en fait d'un objet qui contient l'URL de la base de données et le secret de la base de données.)

Exécution de nodemon et navigation vers localhost: 4000 sur votre navigateur devrait vous donner ceci message:

 "Hola MEVN devs ... Assemble"

En outre, voici à quoi devrait ressembler votre terminal:

 Exécution de Nodemon à l'aide du terminal
Aperçu du terminal ( Grand aperçu )

Configuration du modèle, des itinéraires et des contrôleurs [19659010] Configurons une structure de fichiers en tapant ce qui suit:
 mkdir api && cd api
modèle mkdir && modèle cd && touch Music.js
cd ..
contrôleur mkdir && contrôleur cd && touch musicController.js
cd ..
itinéraires mkdir && itinéraires cd && touch music.js

Dans notre terminal, nous utilisons mkdir pour créer un nouveau répertoire, puis cd pour nous déplacer dans un répertoire. Nous commençons donc par créer un répertoire appelé api puis passons au répertoire api .

La commande touch est utilisée pour créer un nouveau fichier à l'intérieur d'un répertoire utilisant le terminal, tandis que la commande cd est utilisée pour sortir d'un répertoire.

Passons maintenant à notre fichier api / model / Music.js pour créer un schéma musical. Un modèle est une classe avec laquelle nous construisons des documents. Dans ce cas, chaque document sera un morceau de musique avec des propriétés et des comportements tels que déclarés dans notre schéma:

 let mongoose = require ("mongoose");
laissez musicSchema = mongoose.Schema ({
  Titre: {
    type: String,
    requis: vrai
  },
  la musique: {
    type: Objet,
    requis: vrai
  },
  artiste: {
    type: String,
    requis: vrai
  },
  créé: {
    type: Date,
    par défaut: Date.now ()
  }
});
laissez Music = mongoose.model ("Music", musicSchema);
module.exports = Musique;

Dirigeons-nous vers config / multer pour configurer Multer:

 let multer = require ("multer");
const path = require ("path");
const storage = multer.diskStorage ({
  destination: (req, res, cb) => {
    cb (null, "./uploads");
  },
  nom de fichier: (req, file, cb) => {
    cb (null, new Date (). toISOString () + file.originalname);
  }
});
const fileFilter = (req, file, cb) => {
  si (
     file.mimetype === "audio / mpeg" ||
     file.mimetype === "audio / wave" ||
     file.mimetype === "audio / wav" ||
     file.mimetype === "audio / mp3"
  ) {
    cb (nul, vrai);
  } autre {
    cb (null, false);
  }
};
exports.upload = multer ({
  stockage: stockage,
  limites: {
    fileSize: 1024 * 1024 * 5
  },
  fileFilter: fileFilter
});

Dans le fichier multer.js nous commençons par créer un dossier où tous les fichiers musicaux téléchargés seront téléchargés. Nous devons rendre ce fichier statique en le définissant dans le fichier index.js :

 app.use ('/ uploads', express.static ('uploads'));

Après cela, nous écrivons un validateur simple qui vérifiera le fichier mimetype avant de le télécharger. Nous définissons ensuite l'instance multer en ajoutant l'emplacement de stockage, les limites de chaque fichier et le validateur que nous avons créé.

Créer les itinéraires nécessaires

Créons maintenant nos itinéraires. Vous trouverez ci-dessous la liste des points de terminaison que nous allons créer.

HTTP POST / music Ajouter une nouvelle musique
HTTP GET / music Obtenir toute la musique
HTTP DELETE / music /: blogId Supprimer une musique

Commençons par créer l'itinéraire du blog. Rendez-vous sur api / routes / music.js et écrivez le code suivant:

 const express = require ("express");
const router = express.Router ();
const musicController = require ("../ controller / musicController");
const upload = require ("../../ config / multer");
router.get ("/", musicController.getAllMusics);
router.post ("/", upload.upload.single ("music"), musicController.addNewMusic);
router.delete ("/: musicId", musicController.deleteMusic);
module.exports = routeur;

Note : Maintenant, chaque fois que nous faisons une demande de à / musique . l'itinéraire appelle la fonction getAllMusic qui se trouve dans le fichier "controllers".

Passons à api / controllers / musicController pour définir les contrôleurs. Nous commençons par écrire une fonction pour obtenir toute la musique dans notre base de données en utilisant la méthode mongoose db.collection.find qui retournera tous les éléments de cette collection.

Après cela, nous écrivons une autre fonction qui va créer un morceau de nouvelle musique dans la base de données. Nous devons créer une nouvelle instance musicale à l'aide du mot-clé nouveau puis définir l'objet musical. Après cela, nous allons utiliser la méthode mongoose save pour ajouter de la nouvelle musique à la base de données.

Pour supprimer un morceau de musique, nous devons utiliser la mangouste remove en passant simplement l'ID de musique comme paramètre dans l'instance remove . Il en résulte que la mangouste examine la collection de musique qui a cet ID particulier, puis la retire de cette collection.

 let mongoose = require ("mongoose");
const Music = require ("../ model / Music");
exports.getAllMusics = async (req, res) => {
  essayez {
    laisser la musique = attendre Music.find ();
    res.status (200) .json (musique);
  } catch (err) {
    res.status (500) .json (err);
  }
};
exports.addNewMusic = async (req, res) => {
  essayez {
    const music = new Music ({
      titre: req.body.title,
      artiste: req.body.artist,
      musique: fichier de demande
    });
    
    laissez newMusic = attendre music.save ();
    res.status (200) .json ({données: newMusic});
  } catch (err) {
    res.status (500) .json ({erreur: err});
  }
};
exports.deleteMusic = async (req, res) => {
  essayez {
    const id = req.params.musicId;
    laissez result = attendre Music.remove ({_id: id});
    res.status (200) .json (résultat);
  } catch (err) {
    res.status (500) .json (err);
  }
};

Enfin et surtout, pour tester les itinéraires, nous devons enregistrer les itinéraires musicaux dans notre fichier index.js :

 const userRoutes = require ("./ api / user / route / utilisateur "); // apportez nos itinéraires utilisateurs
app.use ("/ user", userRoutes);

Test des points de terminaison

Pour tester nos points de terminaison, nous utiliserons POSTMAN.

Ajout de nouvelle musique

Pour tester la fonctionnalité Ajouter de la musique définissez la méthode de la demande par en cliquant sur le menu déroulant des méthodes. Après cela, tapez l'URL du point de terminaison, puis cliquez sur l'onglet corps pour sélectionner la façon dont vous souhaitez envoyer vos données. (Dans notre cas, nous utiliserons la méthode des données de formulaire.)

Cliquez donc sur les données de formulaire et configurez votre clé de modèle. Au fur et à mesure que vous le configurez, donnez aux touches une certaine valeur, comme indiqué dans l'image ci-dessous:

 Test Ajout d'une nouvelle API musicale à l'aide de Postman
Test Ajout d'une nouvelle API musicale dans le tableau de bord Postman ( Grand aperçu ) [19659072] Après avoir fait cela, cliquez sur 'Envoyer' pour faire la demande.

Liste de toutes les musiques

Pour lister toutes les musiques dans notre base de données, nous devons taper l'URL du point final dans la section URL fournie. Après cela, cliquez sur le bouton «Envoyer» pour faire la demande.

 Test de l'API Listing à l'aide de Postman
Test de l'API Listing dans le tableau de bord Postman ( Grand aperçu )

Suppression de musique [19659043] Pour supprimer un morceau de musique, nous devons passer l'ID de musique comme paramètre.
 Test de l'API de suppression à l'aide de Postman
Test de l'API de suppression du tableau de bord Postman ( Grand aperçu

C'est tout!

Construire le frontend

Pour notre frontend, nous utiliserons un framework Vue: Nuxt.js.

«Nuxt est un framework progressif basé sur Vue.js pour créer un web moderne applications. Il est basé sur les bibliothèques officielles Vue.js (vue, vue-router et vuex) et sur de puissants outils de développement (webpack, Babel et PostCSS). »

Guide NuxtJS

Pour créer un nouveau Nuxt.js , ouvrez votre terminal et saisissez ce qui suit (avec musicapp comme nom de l'application que nous allons créer):

 $ npx create-nuxt-app musicapp

Pendant le processus d'installation, on nous posera des questions concernant la configuration du projet:

Nom du projet musicapp
description du projet Une application Simple music manager
Nom de l'auteur
Gestionnaire de packages npm
Framework d'interface utilisateur Bootstrap vue
framework d'interface utilisateur personnalisé aucun
Modules Nuxt Axios, pwa (utilisez la barre d'espace de votre clavier pour
Prettier
Framework de test Aucun
Mode de rendu Universel (SSR)
Outil de développement Jsonconfig.json

Après avoir tout sélectionné il faut attendre un peu pour la mise en place du projet. Une fois qu'il est prêt, accédez au dossier / project et servez le projet comme suit:

 cd musicapp && npm run dev

Ouvrez le projet dans l'éditeur de code de votre choix, puis ouvrez le projet dans le navigateur en accédant à localhost: 3000 .

 Aperçu du projet Nuxt.js
Projet Nuxt.js Aperçu ( Grand aperçu )

Configuration d'Axios

Nous utiliserons axios pour effectuer une demande HTTP auprès de notre serveur principal. Axios est déjà installé dans notre projet, il nous suffit donc de configurer baseURL - sur notre serveur principal.

Pour ce faire, ouvrez le fichier nuxt.config.js dans le répertoire racine et ajoutez le baseURL dans l'objet axios .

 axios: {
  baseURL: 'http: // localhost: 4000'
},

Création du gestionnaire de musique

Configuration de l'interface utilisateur

Commençons par nettoyer l'interface utilisateur. Ouvrez le fichier pages / index.vue et supprimez tout le code qu'il contient avec ce qui suit:

 

Après cela, vous ne devriez voir qu'un "Bonjour" dans le navigateur.

Dans le répertoire racine créez un dossier / partials . Dans le dossier / partials créez un fichier navbar.vue et ajoutez le code suivant:


Remarque : Nous utiliserons le composant pour parcourir les pages de notre application. Ce sera simplement un composant simple composé de Bootstrap navbar . Consultez la documentation officielle de Bootstrap pour plus d'informations.

Ensuite, définissons une disposition personnalisée pour l'application. Ouvrez le dossier / layouts remplacez le code du fichier default.vue par le code ci-dessous.

   

Nous importons le navbar dans cette disposition, ce qui signifie que toutes les pages de notre application auront ce composant navbar . (Ce sera le composant sur lequel tous les autres composants de notre application seront montés.)

Après cela, vous devriez pouvoir voir ceci dans votre navigateur:

 Composant Nuxt.js Navbar après modification
Composant Nuxt.js Navbar ( Grand aperçu )

Maintenant, configurons l'interface utilisateur de notre gestionnaire. Pour ce faire, nous devons créer un dossier / manager dans le dossier des composants, puis ajouter un fichier dans le dossier nommé manager.vue .

Dans ce fichier, ajoutez le code suivant:

 

Remarque : Ce n'est qu'un simple modèle Bootstrap pour ajouter de la musique dans notre application. Le formulaire définira un modèle de table qui répertoriera tous les os de la musique que nous pouvons trouver dans notre base de données.

Après avoir défini ce composant, nous devons l'enregistrer dans le dossier / pages pour lancer le routage.

Nuxt.js n'a pas de fichier 'router.js' comme Vue.js. Il utilise le dossier des pages pour le routage. Pour plus de détails, visitez le site Web Nuxt.js .

Pour enregistrer le composant, créez un dossier / manager dans le dossier / pages et créez un fichier index.vue . Ensuite, placez le code suivant dans le fichier:

   

C'est le composant qui s'affichera dans notre itinéraire pages .

Après cela, rendez-vous sur votre navigateur et accédez à / manager - vous devriez voir ceci :

 Interface utilisateur du gestionnaire de musique
Interface utilisateur du gestionnaire de musique ( Grand aperçu )

Liste de toutes les musiques

Continuons en créant une fonction qui récupérera toute la musique. Cette fonction sera enregistrée dans le hook de cycle de vie créé, de sorte que chaque fois que le composant est créé, la fonction sera appelée.

Commençons par créer une variable dans l'instance vue qui contiendra tout la musique:

 allmusic = [];
musiqueChargement: faux,

Ensuite, définissez une fonction getAllMusics et ajoutez le code suivant:

 async getAllMusics () {
    this.musicLoading = true
    essayez {
      laissez data = attendre ceci. $ axios. $ get ('/ music')
      this.allmusic = data
      this.musicLoading = false
    } catch (err) {
      this.musicLoading = false
      swal ('Error', 'Error Fetting Musics', 'error')
    }
  }

Ensuite, enregistrez-vous dans le hook de cycle de vie créé:

 created () {
    this.getAllMusics ()
  }

Sortie des données

Il est maintenant temps de sortir toutes les chansons de la table que nous avons créées précédemment:

 
              
                
                  
Chargement ...
                                            
# Titre Artiste Date de création Action
{{index + 1}} {{music.title}} [19659181] {{music.artist}} {{music.created}}                                        

Vous vous souvenez de cette table que nous avons créée plus tôt? Eh bien, nous devrons parcourir la réponse que nous recevons de notre serveur pour répertorier toute la musique reçue de la base de données.

Ajout de musique

Pour ajouter un nouveau morceau de musique, nous devons faire une demande HTTP au serveur principal avec les détails de la musique. Pour ce faire, commençons par modifier le formulaire et la gestion des téléchargements de fichiers.

Sur le formulaire, nous devons ajouter un écouteur d'événement qui écoutera le formulaire lors de sa soumission. Dans le champ d'entrée nous ajoutons un modèle v- pour lier la valeur au champ d'entrée.

 
            
              
            
          

Et la section de script devrait ressembler à ceci:

  

Nous définirons une fonction qui enverra une demande à notre service principal pour créer toute nouvelle musique qui a été ajoutée à la liste. Aussi. nous devons écrire une fonction de validation simple qui vérifiera le type de fichier afin que les utilisateurs puissent uniquement télécharger des fichiers avec une extension de .mp3 et .mp4 .

C'est important pour définir une propriété calculée pour vous assurer que notre champ de saisie n'est pas vide. Nous devons également ajouter un validateur simple qui s'assurera que le fichier que nous essayons de télécharger est bien un fichier musical.

Continuons en éditant la fonction addMusic pour faire une demande dans notre dossier. fin du service. Mais avant de faire cela, installons d'abord sweetalert qui nous fournira une belle fenêtre modale. Pour ce faire, ouvrez votre terminal et saisissez ce qui suit:

 npm i sweetalert

Après avoir installé le package, créez un fichier sweetalert.js dans le dossier / plugins et ajoutez ceci:

 import Vue depuis 'vue';
importation de swal de «sweetalert»;

Vue.prototype. $ Swal = swal;

Ensuite, enregistrez le plugin dans le fichier nuxt.config.js à l'intérieur de l'instance de plugin comme ceci:

 plugins: [
    {
      src: '~/plugins/sweetalert'
    }
  ],

Nous avons maintenant configuré avec succès sweetalert dans notre application, afin que nous puissions continuer et modifier la fonction addmusic comme suit:

 addNewMusic () {
    laissez types = /(.|/)(mp3|mp4)$/i
    si (
      types.test (this.musicDetails.music.type) ||
      types.test (this.musicDetails.music.name)
    ) {
      let formData = new FormData ()
      formData.append ('title', this.musicDetails.title)
      formData.append ('artiste', this.musicDetails.artist)
      formData.append ('musique', this.musicDetails.music)
      this.addLoading = true
      ceci. $ axios
        . $ post ('/ musique', formData)
        .then (response => {
          console.log (réponse)
          this.addLoading = false
          this.musicDetails = {}
          this.getAllMusics () // nous créerons cette fonction plus tard
          swal ('Success', 'New Music Added', 'success')
        })
        .catch (err => {
          this.addLoading = false
          swal ('Erreur', 'Quelque chose ne va pas', 'erreur')
          console.log (err)
        })
    } autre {
      swal ('Erreur', 'Type de fichier invalide', 'erreur')
      retour! this.isValid
    }
  },

Écrivons un script simple qui fera basculer le formulaire, c'est-à-dire qu'il ne devrait s'afficher que lorsque nous voulons ajouter de la nouvelle musique.

Nous pouvons le faire en éditant le bouton "Ajouter de la musique" dans le tableau qui affiche tous les musique que l'on peut trouver:

 

Ensuite, ajoutez un état qui contiendra l'état du formulaire dans la propriété data :

 addState: false

Après cela, définissons la fonction initForm :

 initForm () {
    this.addState =! this.addState
  },

Et puis ajoutez v-if = "addState" à la div qui contient la forme:

 

Suppression de musique

Pour supprimer de la musique, nous devons appeler le point d'extrémité supprimer et transmettre l'ID de musique comme paramètre. Ajoutons un événement cliquez sur au bouton "Supprimer" qui déclenchera la fonction pour supprimer une fonction:

 

La fonction delete fera une requête HTTP à notre service principal. Après avoir obtenu l'ID de musique du paramètre de fonction deleteMusic nous ajouterons l'ID dans l'URL que nous utilisons pour envoyer la demande. Ceci spécifie le morceau de musique exact qui doit être supprimé de la base de données.

 deleteMusic (id) {
    swal ({
      title: 'Êtes-vous sûr?',
      text: 'Une fois supprimé, vous ne pourrez plus récupérer cette musique!',
      icône: 'avertissement',
      boutons: vrai,
      dangerMode: true
    }). Puis (willDelete => {
      if (willDelete) {
        ceci. $ axios
          . $ delete ('/ musique /' + id)
          .then (response => {
            this.getAllMusics ()
            swal ('Poof! Votre fichier musical a été supprimé!', {
              icône: «succès»
            })
          })
          .catch (err => {
            swal ('Erreur', 'Quelque chose s'est mal passé', 'erreur')
          })
      } autre {
        swal ('Votre fichier musical est en sécurité!')
      }
    })
  }

Avec tout cela, nous venons de construire notre gestionnaire de musique. Il est maintenant temps de créer le lecteur de musique.

Commençons par créer un nouveau dossier dans le dossier des composants nommé / player . Ensuite, créez un fichier player.vue dans ce dossier et ajoutez ceci:

   

Ensuite, importons ce composant dans le fichier index.vue du dossier / pages . Remplacez le code du fichier index.vue par:

   

Configurons le routage dans notre composant navbar pour activer le routage entre nos pages.

Pour router dans une application Nuxt.js, le nuxt-link est utilisé après quoi vous ont spécifié la page de cet itinéraire vers une instance particulière. Modifions donc le code du composant partials / navbar comme suit:

 

Avec cela, nous pouvons naviguer dans nos pages en utilisant la barre de navigation.

Construire le lecteur

Avant de commencer, nous devons étendre Webpack pour charger des fichiers audio. Les fichiers audio doivent être traités par le chargeur de fichiers . Ce chargeur est déjà inclus dans la configuration Webpack par défaut, mais il n'est pas configuré pour gérer les fichiers audio.

Pour ce faire, accédez au fichier nuxt.config.js et modifiez le build s'y opposer:

 build: {
    étendre (config, ctx) {
      config.module.rules.push ({
        test: /.(ogg|mp3|mp4|wav|mpe?g)$/i,
        chargeur: 'chargeur de fichiers',
        options: {
          nom: ' [path][name]. [ext]'
        }
      })
    }
  }

Écrivons ensuite une fonction qui récupérera toutes les chansons, puis utiliser le constructeur Audio pour jouer la première chanson du tableau allMusic .

Pour commencer, modifions notre player.vue fichier à ceci:

   

Une fois le fichier servi, la musique sera lue en arrière-plan, puis vous devriez pouvoir voir ceci dans votre navigateur:

 Interface utilisateur du lecteur de musique
Interface utilisateur du lecteur de musique ( Grand aperçu )

Pour arrêter la musique, il vous suffit de commenter le attend player.play () dans la fonction initPlayer .

Création de l'interface utilisateur du lecteur [19659010] Définissons maintenant l'interface utilisateur du lecteur de musique en remplaçant le modèle de notre fichier player.vue par ce qui suit:
 

Ajoutez ensuite le style suivant dans la section style :

Après avoir modifié cela, le lecteur devrait ressembler à ceci:

 Interface utilisateur finale du lecteur de musique
Interface utilisateur finale du lecteur de musique ( Grand aperçu )

Ajout de la fonction de lecture

Nous Je vais continuer en affichant la description de la musique sur la table. Pour ce faire, remplacez le tableau par le code ci-dessous:

 
              
                
                  
                
              
            
# Titre Artiste Action
{{index + 1}} {{music.title}} {{music.artist}}                                        

Nous ne voulons pas afficher les icônes "Lecture" et "Pause" en même temps. Au lieu de cela, nous voulons une situation où, lorsque la chanson est en cours de lecture, l’icône ‘Pause’ s’affiche. En outre, lorsque le morceau est en pause, l'icône de lecture doit être affichée.

Pour y parvenir, nous devons définir un état isPlaying sur l'instance false puis utiliser cette instance pour basculer les icônes. Après cela, nous ajouterons une fonction à notre icône "Play".

 isplaying: false

Après cela, modifiez votre icône "Lecture" et "Pause" comme suit:

  
 

Avec tout cela, définissons la méthode play :

 play (song) {
      console.log (chanson)
      if (chanson) {
        this.current = song
        this.player.src = `http: // localhost: 4000 / $ {this.current.music.path}`
      }
      this.player.play ()
      this.isplaying = true
    },

Nous obtenons tout d'abord la chanson actuelle et la passons dans le paramètre de fonction . Nous définissons ensuite l'instance JavaScript Audio () . Ensuite, nous vérifions si la chanson est nulle: si ce n'est pas le cas, nous définissons this.current sur la chanson que nous avons passée dans le paramètre, puis nous appelons l'instance de joueur Audio . (N'oubliez pas non plus que nous devons définir l'état isPlaying sur true lorsque la musique est en cours de lecture.)

Ajout de la fonction de pause

Pour suspendre une chanson , nous utiliserons la méthode de pause Audio . Nous devons ajouter un événement cliquez sur à l'icône de pause:

  

Et définissez ensuite la fonction dans l'instance de méthodes :

 pause () {
      this.player.pause ()
      this.isplaying = false
    },

Lecture d'une chanson de la liste de musique

C'est assez simple à mettre en œuvre. Tout ce que nous avons à faire est d'ajouter un événement cliquez sur qui changera le paramètre chanson dans la méthode play à la chanson que nous venons de créer.

Modifiez simplement le bouton jouer sur le tableau de la liste de musique à ceci:

 

Et le tour est joué!

Ajout de la fonction suivante

Pour ajouter la fonction suivante, nous devons incrémenter l'index d'une unité. Pour ce faire, ajoutez un événement cliquez sur à l'icône suivante:

 @ click = "next"

Et définissez ensuite la fonction prev dans l'instance de méthodes :

 next () {
      this.index ++
      if (this.index> this.allMusic.length - 1) {
        this.index = 0
      }
       this.current = this.allMusic [this.index]
      this.play (this.current)
    },

Ce conditionnel est responsable de la lecture de toutes les chansons chaque fois que la dernière chanson de la liste a été jouée.

Ajout de la précédente Fonction

C'est en fait l'opposé de la fonction suivante, ajoutons donc un événement click à la fonction précédente:

 @ click = "prev"

Ensuite, nous définissons la fonction précédente:

 prev () {
      this.index--
      if (this.index 

Notre application de lecteur de musique est maintenant terminée!

Conclusion

Dans cet article, nous avons examiné comment créer un gestionnaire de musique avec Nuxt.js et Express.js. En cours de route, nous avons vu comment Multer rationalise le processus de gestion des téléchargements de fichiers et comment utiliser Mongoose pour interagir sans base de données. Enfin, nous avons utilisé Nuxt.js pour créer l'application cliente qui lui donne une sensation rapide et rapide.

Contrairement à d'autres frameworks, la création d'une application avec Nuxt.js et Express.js est assez facile et rapide. La partie intéressante de Nuxt.js est la façon dont il gère vos itinéraires et vous permet de mieux structurer vos applications.

  • Vous pouvez accéder à plus d'informations sur Nuxt. js ici .
  • Vous pouvez accéder au code source sur Github ici
 Smashing Editorial (dm, il)




Source link