Les observateurs JavaScript sont essentiels à la création d'applications dynamiques en permettant aux développeurs de réagir aux modifications apportées aux objets, aux événements ou aux flux de données. Ce guide explore différents types d'observateurs JavaScript avec des explications détaillées et des exemples pratiques.
Les écouteurs d'événements sont des observateurs JavaScript fondamentaux, réagissant à des événements tels que les interactions des utilisateurs (clics, pressions sur des touches, mouvements de la souris).
<code class="language-javascript">// Select a button const button = document.querySelector('button'); // Add a click listener button.addEventListener('click', (event) => { console.log('Button clicked!', event); }); // Add a mouseover listener button.addEventListener('mouseover', () => { console.log('Mouse over button!'); });</code>
Les observateurs de mutations suivent les modifications du DOM (nœuds ajoutés, supprimés ou modifiés), essentielles pour le contenu mis à jour dynamiquement.
<code class="language-javascript">// Target node const targetNode = document.querySelector('#target'); // Create a MutationObserver const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((mutation) => { console.log('DOM change detected:', mutation); }); }); // Configuration const config = { childList: true, attributes: true, subtree: true }; // Start observing observer.observe(targetNode, config); // Simulate a change setTimeout(() => { const newElement = document.createElement('p'); newElement.textContent = 'New text!'; targetNode.appendChild(newElement); }, 2000);</code>
Les observateurs d'intersection détectent le moment où les éléments entrent ou sortent de la fenêtre, idéal pour le chargement paresseux ou les animations.
<code class="language-javascript">// Element to observe const targetElement = document.querySelector('#box'); // Create an IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { console.log('Element in viewport:', entry.target); } else { console.log('Element out of viewport:', entry.target); } }); }); // Start observing observer.observe(targetElement);</code>
Les observateurs de redimensionnement surveillent les changements de taille des éléments, ce qui est crucial pour les interfaces utilisateur réactives.
<code class="language-javascript">// Element to observe const box = document.querySelector('#resizable'); // Create a ResizeObserver const observer = new ResizeObserver((entries) => { entries.forEach((entry) => { const { width, height } = entry.contentRect; console.log(`New size: ${width}px x ${height}px`); }); }); // Start observing observer.observe(box); // Simulate a resize setTimeout(() => { box.style.width = '400px'; box.style.height = '200px'; }, 2000);</code>
L'API Proxy permet d'observer les modifications des propriétés des objets, permettant ainsi des réactions dynamiques aux mises à jour.
<code class="language-javascript">// Object to observe const obj = { name: 'John', age: 30 }; // Use Proxy const observedObj = new Proxy(obj, { set(target, property, value) { console.log(`Property '${property}' changed from '${target[property]}' to '${value}'`); target[property] = value; return true; }, }); // Trigger changes observedObj.name = 'Jane'; observedObj.age = 31;</code>
RxJS fournit des implémentations avancées de modèles d'observateurs pour une gestion efficace des flux de données.
<code class="language-javascript">// Select a button const button = document.querySelector('button'); // Add a click listener button.addEventListener('click', (event) => { console.log('Button clicked!', event); }); // Add a mouseover listener button.addEventListener('mouseover', () => { console.log('Mouse over button!'); });</code>
Les observateurs de performances suivent les événements de performances (chargement de ressources, tâches longues) pour l'optimisation des applications.
<code class="language-javascript">// Target node const targetNode = document.querySelector('#target'); // Create a MutationObserver const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((mutation) => { console.log('DOM change detected:', mutation); }); }); // Configuration const config = { childList: true, attributes: true, subtree: true }; // Start observing observer.observe(targetNode, config); // Simulate a change setTimeout(() => { const newElement = document.createElement('p'); newElement.textContent = 'New text!'; targetNode.appendChild(newElement); }, 2000);</code>
Créez des observateurs personnalisés à l'aide du modèle de conception d'observateur pour des scénarios allant au-delà des API intégrées.
<code class="language-javascript">// Element to observe const targetElement = document.querySelector('#box'); // Create an IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { console.log('Element in viewport:', entry.target); } else { console.log('Element out of viewport:', entry.target); } }); }); // Start observing observer.observe(targetElement);</code>
Les observateurs JavaScript sont des outils puissants pour créer des applications dynamiques et réactives. La maîtrise de ces différents types améliorera considérablement vos capacités de développement JavaScript. Expérimentez avec ces exemples pour approfondir votre compréhension et intégrez-les dans vos projets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!