Chaque navigateur expose une console qui vous permet d'interagir avec les API de la plate-forme Web et vous donne également un aperçu du code en imprimant des messages générés par votre code JavaScript exécuté dans la page
Chaque navigateur expose une console qui vous permet d'interagir avec leAPI de plate-forme Webet vous donne également un aperçu du code en imprimant les messages générés par votreJavaScriptcode en cours d'exécution dans la page.
- Vue d'ensemble de la console
- Utiliser le formatage console.log
- Effacer la console
- Comptage des éléments
- Enregistrer des objets plus complexes
- Enregistrement de différents niveaux d'erreur
- Conserver les journaux pendant la navigation
- Regroupement des messages de la console
- Imprimer la trace de la pile
- Calculez le temps passé
- Générer un profil CPU
Vue d'ensemble de la console
La barre d'outils de la console est simple. Il y a un bouton pour effacer les messages de la console, ce que vous pouvez également faire en cliquant surcmd-K
dans macOS, ouctrl-K
sous Windows, un deuxième bouton qui active une barre latérale de filtrage, qui vous permet de filtrer par texte ou par type de message, par exemple les messages d'erreur, d'avertissement, d'informations, de journal ou de débogage.
Vous pouvez également choisir de masquer les messages générés par le réseau et de vous concentrer uniquement sur les messages du journal JavaScript.
La console n'est pas seulement un endroit où vous pouvez voir les messages, mais aussi le meilleur moyen d'interagir avec le code JavaScript, et souvent avec le DOM. Ou, obtenez simplement des informations sur la page.
Tapons notre premier message. Remarquez le>, cliquons là-bas et saisissons
console.log('test')
La console agit comme unREPL, ce qui signifie une boucle de lecture-évaluation-impression. En bref, il interprète notre code JavaScript et imprime quelque chose.
Utiliser le formatage console.log
Comme tu vois,console.log('test')
imprime «test» dans la console.
Utilisantconsole.log
dans votre code JavaScript peut vous aider à déboguer par exemple en imprimant des chaînes statiques, mais vous pouvez également lui passer une variable, qui peut être un type natif JavaScript (par exemple un entier) ou un objet.
Vous pouvez transmettre plusieurs variables àconsole.log
, par exemple:
console.log('test1', 'test2')
Nous pouvons également formater de jolies phrases en passant des variables et un spécificateur de format.
Par exemple:
console.log('My %s has %d years', 'cat', 2)
%s
formater une variable sous forme de chaîne%d
ou%i
formater une variable sous forme d'entier%f
formater une variable sous forme de nombre à virgule flottante%o
peut être utilisé pour imprimer un élément DOM%O
utilisé pour imprimer une représentation d'objet
Exemple:
console.log('%o, %O', document.body, document.body)
Un autre spécificateur de format utile est%c
, qui permet de passer du CSS pour formater une chaîne. Par exemple:
console.log(
'%c My %s has %d years',
'color: yellow; background:black; font-size: 16pt',
'cat',
2
)
Effacer la console
Il existe trois façons d'effacer la console tout en travaillant dessus, avec différentes méthodes de saisie.
La première façon est de cliquer sur leEffacer le journal de la consolebouton sur la barre d'outils de la console.
La deuxième méthode consiste à taperconsole.clear()
à l'intérieur de la console, ou dans votreFonction JavaScriptqui s'exécute dans votre application / site.
Vous pouvez également simplement taperclear()
.
La troisième méthode consiste à utiliser un raccourci clavier, et c'estcmd-k
(mac) ouctrl + l
(Gagner)
Comptage des éléments
console.count()
est une méthode pratique.
Prenez ce code:
const x = 1
const y = 2
const z = 3
console.count(
'The value of x is ' + x + ' and has been checked .. how many times?'
)
console.count(
'The value of x is ' + x + ' and has been checked .. how many times?'
)
console.count(
'The value of y is ' + y + ' and has been checked .. how many times?'
)
Ce qui se passe, c'est que count compte le nombre de fois qu'une chaîne est imprimée et affiche le nombre à côté:
Vous pouvez simplement compter les pommes et les oranges:
const oranges = ['orange', 'orange']
const apples = ['just one apple']
oranges.forEach(fruit => {
console.count(fruit)
})
apples.forEach(fruit => {
console.count(fruit)
})
Enregistrer des objets plus complexes
console.log
est assez étonnant d'inspecter les variables. Vous pouvez également lui transmettre un objet et il fera de son mieux pour vous l'imprimer de manière lisible. La plupart du temps, cela signifie qu'il imprime une représentation sous forme de chaîne de l'objet.
Par exemple, essayez
console.log([1, 2])
Une autre option pour imprimer des objets consiste à utiliserconsole.dir
:
console.dir([1, 2])
Comme vous pouvez le voir, cette méthode imprime la variable dans une représentation de type JSON, vous pouvez donc inspecter toutes ses propriétés.
La même chose que la sortie console.dir est réalisable en faisant
console.log('%O', [1, 2])
Lequel utiliser dépend de ce que vous devez déboguer bien sûr, et l'un des deux peut faire le meilleur travail pour vous.
Une autre fonction estconsole.table()
qui imprime un joli tableau.
Nous avons juste besoin de lui passer un tableau d'éléments, et il imprimera chaque élément du tableau dans une nouvelle ligne.
Par exemple
console.table([[1, 2], ['x', 'y']])
ou vous pouvez également définir des noms de colonne, en passant à la place d'un tableau, un littéral d'objet, de sorte qu'il utilisera la propriété d'objet comme nom de colonne
console.table([
{ x: 1, y: 2, z: 3 },
{ x: 'First column', y: 'Second column', z: null }
])
console.table
peut également être plus puissant et si vous lui passez un objet littéral qui contient à son tour un objet, et que vous passez un tableau avec les noms de colonne, il imprimera une table avec les index de ligne tirés du littéral objet. Par exemple:
const shoppingCart = {}
shoppingCart.firstItem = { color: 'black', size: 'L' }
shoppingCart.secondItem = { color: 'red', size: 'L' }
shoppingCart.thirdItem = { color: 'white', size: 'M' }
console.table(shoppingCart, ['color', 'size'])
Enregistrement de différents niveaux d'erreur
Comme nous l'avons vu, console.log est idéal pour imprimer des messages dans la console.
Nous allons maintenant découvrir trois autres méthodes pratiques qui nous aideront à déboguer, car elles indiquent implicitement différents niveaux d'erreur.
Première,console.info ()
Comme vous pouvez le voir, un petit «i» est imprimé à côté, ce qui indique clairement que le message du journal n'est qu'une information.
Deuxième,console.warn ()
imprime un point d'exclamation jaune.
Si vous activez la barre d'outils de filtrage de la console, vous pouvez voir que la console vous permet de filtrer les messages en fonction du type, il est donc très pratique de différencier les messages car par exemple si nous cliquons maintenant sur `` Avertissements '', tous les messages imprimés qui ne sont pas des avertissements sera caché.
La troisième fonction estconsole.error ()
c'est un peu différent des autres car en plus d'imprimer un X rouge qui indique clairement qu'il y a une erreur, nous avons la trace complète de la pile de la fonction qui a généré l'erreur, afin que nous puissions essayer de la corriger.
Conserver les journaux pendant la navigation
Les messages de la console sont effacés à chaque navigation de page, sauf si vous cochez la caseConserver le journaldans les paramètres de la console:
Regroupement des messages de la console
Les messages de la console peuvent augmenter en taille et le bruit lorsque vous essayez de déboguer une erreur peut être écrasant.
Pour limiter ce problème, l'API de la console propose une fonctionnalité pratique: Regrouper les messages de la console.
Faisons d'abord un exemple.
console.group('Testing the location')
console.log('Location hash', location.hash)
console.log('Location hostname', location.hostname)
console.log('Location protocol', location.protocol)
console.groupEnd()
Comme vous pouvez le voir, la console crée un groupe, et là, nous avons les messages du journal.
Vous pouvez faire de même, mais afficher un message réduit que vous pouvez ouvrir à la demande, pour limiter davantage le bruit:
console.groupCollapsed('Testing the location')
console.log('Location hash', location.hash)
console.log('Location hostname', location.hostname)
console.log('Location protocol', location.protocol)
console.groupEnd()
Ce qui est bien, c'est que ces groupes peuvent être imbriqués, donc vous pouvez finir par faire
console.group('Main')
console.log('Test')
console.group('1')
console.log('1 text')
console.group('1a')
console.log('1a text')
console.groupEnd()
console.groupCollapsed('1b')
console.log('1b text')
console.groupEnd()
console.groupEnd()
Imprimer la trace de la pile
Il peut y avoir des cas où il est utile d'imprimer la trace de la pile d'appels d'une fonction, peut-être pour répondre à la questioncomment avez-vous atteint cette partie du code?
Vous pouvez le faire en utilisantconsole.trace()
:
const function2 = () => console.trace()
const function1 = () => function2()
function1()
Calculez le temps passé
Vous pouvez facilement calculer le temps d'exécution d'une fonction en utilisanttime()
ettimeEnd()
const doSomething = () => console.log('test')
const measureDoingSomething = () => {
console.time('doSomething()')
//do something, and measure the time it takes
doSomething()
console.timeEnd('doSomething()')
}
measureDoingSomething()
Générer un profil CPU
Les DevTools vous permettent d'analyser les performances du profil CPU de n'importe quelle fonction.
Vous pouvez démarrer cela manuellement, mais le moyen le plus précis de le faire est d'enrouler ce que vous souhaitez surveiller entre lesprofile()
etprofileEnd()
commandes. Ils sont similaires àtime()
ettimeEnd()
, sauf qu'ils ne mesurent pas seulement le temps, mais créent un rapport plus détaillé.
const doSomething = () => console.log('test')
const measureDoingSomething = () => {
console.profile('doSomething()')
//do something, and measure its performance
doSomething()
console.profileEnd()
}
measureDoingSomething()
Téléchargez mon gratuitManuel du débutant JavaScript
Plus de didacticiels sur le navigateur:
- Quelques astuces utiles disponibles en HTML5
- Comment j'ai fait fonctionner un site Web basé sur un CMS hors ligne
- Le guide complet des applications Web progressives
- L'API Fetch
- Le guide de l'API Push
- L'API Channel Messaging
- Tutoriel pour les techniciens de service
- Le guide de l'API Cache
- Le guide de l'API de notification
- Plongez dans IndexedDB
- L'API Selectors: querySelector et querySelectorAll
- Chargez efficacement JavaScript avec différé et asynchrone
- Le modèle d'objet de document (DOM)
- L'API Web Storage: stockage local et stockage de session
- Découvrez comment fonctionnent les cookies HTTP
- L'API History
- Le format d'image WebP
- XMLHttpRequest (XHR)
- Un tutoriel SVG approfondi
- Que sont les URL de données
- Feuille de route pour apprendre la plate-forme Web
- CORS, partage de ressources inter-origines
- Travailleurs Web
- Le guide requestAnimationFrame ()
- Quel est le Doctype
- Utilisation de la console DevTools et de l'API de la console
- L'API de synthèse vocale
- Comment attendre l'événement DOM ready en JavaScript brut
- Comment ajouter une classe à un élément DOM
- Comment faire une boucle sur des éléments DOM à partir de querySelectorAll
- Comment supprimer une classe d'un élément DOM
- Comment vérifier si un élément DOM a une classe
- Comment modifier la valeur d'un nœud DOM
- Comment ajouter un événement de clic à une liste d'éléments DOM renvoyés par querySelectorAll
- WebRTC, l'API Web en temps réel
- Comment obtenir la position de défilement d'un élément en JavaScript
- Comment remplacer un élément DOM
- Comment accepter uniquement les images dans un champ de fichier d'entrée
- Pourquoi utiliser une version préliminaire d'un navigateur?
- L'objet Blob
- L'objet fichier
- L'objet FileReader
- L'objet FileList
- ArrayBuffer
- ArrayBufferView
- L'objet URL
- Tableaux typés
- L'objet DataView
- L'API BroadcastChannel
- L'API Streams
- L'objet FormData
- L'objet Navigateur
- Comment utiliser l'API de géolocalisation
- Comment utiliser getUserMedia ()
- Comment utiliser l'API Drag and Drop
- Comment travailler avec le défilement sur les pages Web
- Gestion des formulaires en JavaScript
- Événements de clavier
- Événements de souris
- Événements tactiles
- Comment supprimer tous les enfants d'un élément DOM
- Comment créer un attribut HTML à l'aide de JavaScript vanille
- Comment vérifier si une case est cochée à l'aide de JavaScript?
- Comment copier dans le presse-papiers à l'aide de JavaScript
- Comment désactiver un bouton à l'aide de JavaScript
- Comment rendre une page modifiable dans le navigateur
- Comment obtenir des valeurs de chaîne de requête en JavaScript avec URLSearchParams
- Comment supprimer tous les CSS d'une page à la fois
- Comment utiliser insertAdjacentHTML
- Safari, prévenez avant de quitter
- Comment ajouter une image au DOM en utilisant JavaScript
- Comment réinitialiser un formulaire
- Comment utiliser Google Fonts