Démarrer l'essai gratuit
Searching...
SoBrief
Français
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Learning JavaScript Design Patterns

Learning JavaScript Design Patterns

A JavaScript and React Developer's Guide
par Addy Osmani 2011 296 pages
3.83
500+ évaluations
Écouter
Essayez l'accès complet pendant 3 jours
Débloquez l'écoute et bien plus !
Continuer

Points clés

1. Les design patterns JavaScript optimisent la structure du code et résolvent des problèmes courants

Les design patterns nous permettent de nous appuyer sur l’expérience de développeurs ayant défini, au fil des décennies, des solutions éprouvées à des problèmes complexes et des architectures robustes.

Solutions réutilisables. Les design patterns en JavaScript offrent des réponses éprouvées aux défis fréquents de programmation. Ils fournissent un vocabulaire commun aux développeurs pour discuter et mettre en œuvre des structures de code efficaces. En s’appuyant sur ces modèles, les développeurs peuvent :

  • Améliorer l’organisation et la maintenabilité du code
  • Renforcer la flexibilité et la scalabilité des logiciels
  • Faciliter la collaboration au sein des équipes

Catégories de patterns. Les design patterns se répartissent généralement en trois grandes familles :

  • Créationnels : centrés sur les mécanismes de création d’objets
  • Structurels : axés sur la composition et les relations entre objets
  • Comportementaux : dédiés à la communication et à la répartition des responsabilités entre objets

Comprendre et appliquer ces patterns permet d’améliorer significativement la qualité et l’efficacité des applications JavaScript, conduisant à des bases de code plus robustes et faciles à maintenir.

2. Les patterns créationnels : Constructor, Module, Singleton et Factory

Le pattern Module encapsule l’état « privé » et l’organisation grâce aux closures.

Mécanismes de création d’objets. Les patterns créationnels se concentrent sur des méthodes efficaces pour créer des objets et gérer leur instanciation. Parmi les principaux patterns créationnels en JavaScript, on trouve :

  • Constructor : définit l’initialisation des objets
  • Module : encapsule l’état privé et expose des interfaces publiques
  • Singleton : garantit l’existence d’une unique instance d’une classe
  • Factory : centralise la logique de création d’objets

Modularité et encapsulation. Ces patterns favorisent :

  • Une meilleure organisation et réutilisabilité du code
  • La confidentialité des données et un accès contrôlé
  • Une instanciation d’objets flexible

En adoptant ces patterns, les développeurs peuvent concevoir des structures de code plus maintenables et évolutives, particulièrement dans les applications complexes où la gestion des objets devient critique.

3. Les patterns structurels : Decorator, Facade, Flyweight et Mixin

Le pattern Decorator vise à promouvoir la réutilisation du code.

Composition d’objets. Les patterns structurels traitent de la composition d’objets, offrant des moyens de constituer des structures plus vastes à partir d’éléments individuels. Parmi les patterns structurels clés, on distingue :

  • Decorator : ajoute dynamiquement des fonctionnalités aux objets
  • Facade : simplifie des sous-systèmes complexes via une interface unifiée
  • Flyweight : partage des données communes entre plusieurs objets
  • Mixin : ajoute propriétés et méthodes à des objets

Flexibilité et efficacité. Ces patterns apportent :

  • Une meilleure réutilisation du code
  • Des interfaces simplifiées pour des systèmes complexes
  • Une optimisation de l’utilisation mémoire
  • Une composition d’objets plus souple

Les patterns structurels permettent de concevoir des structures d’objets plus flexibles et performantes, améliorant ainsi la conception et le fonctionnement global des systèmes.

4. Les patterns comportementaux : Observer, Mediator et Command

Le pattern Observer permet de notifier un objet lorsqu’un autre change, sans que ce dernier ait besoin de connaître ses dépendants.

Interactions entre objets. Les patterns comportementaux se concentrent sur la communication entre objets, définissant leur mode de collaboration. Parmi les patterns comportementaux essentiels, on trouve :

  • Observer : établit une dépendance un-à-plusieurs entre objets
  • Mediator : centralise les communications complexes entre objets
  • Command : encapsule une requête sous forme d’objet

Communication améliorée. Ces patterns offrent :

  • Un couplage faible entre objets
  • Un contrôle centralisé des interactions
  • Une flexibilité dans l’exécution et l’annulation d’opérations

En mettant en œuvre ces patterns, les développeurs créent des systèmes plus robustes et maintenables, notamment dans des applications complexes où de nombreux composants interagissent.

5. Les patterns architecturaux MVC, MVP et MVVM pour organiser les applications

Le pattern MVC s’appuie sur le pattern Observer pour certaines de ses communications clés (un aspect étonnamment peu abordé dans de nombreux articles sur MVC).

Séparation des préoccupations. Ces patterns architecturaux proposent des structures pour organiser la logique applicative :

  • Model-View-Controller (MVC) : sépare les données, l’interface utilisateur et la logique de contrôle
  • Model-View-Presenter (MVP) : proche de MVC, avec une vue plus passive
  • Model-View-ViewModel (MVVM) : dissocie le développement de la vue de la logique métier

Avantages des patterns architecturaux :

  • Meilleure organisation et maintenabilité du code
  • Testabilité accrue des composants individuels
  • Collaboration facilitée entre développeurs
  • Scalabilité améliorée pour les grandes applications

Ces patterns aident à concevoir des applications plus structurées, maintenables et évolutives en clarifiant la séparation des différentes responsabilités.

6. Modules JavaScript modernes et patterns de programmation asynchrone

Le pattern async/await est la méthode principale pour récupérer des données depuis les Server Components.

Organisation modulaire du code. JavaScript moderne intègre un support natif des modules, permettant de structurer les bases de code de manière plus claire et maintenable. Les concepts clés incluent :

  • Modules ES6 avec import et export
  • Imports dynamiques pour le découpage du code et l’optimisation des performances

Programmation asynchrone. Les patterns pour gérer l’asynchronicité comprennent :

  • Promises : représentant l’achèvement futur d’une opération asynchrone
  • Async/await : une syntaxe simplifiée pour manipuler les Promises
  • Observables : gestion de flux de données asynchrones

Ces patterns modernes permettent d’écrire un code plus propre et efficace pour gérer des opérations asynchrones complexes et organiser des applications à grande échelle.

7. Patterns React : Higher-Order Components, Render Props et Hooks

Les Higher-Order Components nous permettent de centraliser la logique que nous souhaitons réutiliser.

Composition de composants. React propose plusieurs patterns pour créer des composants réutilisables et composables :

  • Higher-Order Components (HOCs) : enrichissent les composants avec des fonctionnalités supplémentaires
  • Render Props : partagent du code entre composants via une prop dont la valeur est une fonction
  • Hooks : ajoutent état et gestion du cycle de vie aux composants fonctionnels

Avantages des patterns React :

  • Réutilisabilité accrue du code
  • Composition de composants améliorée
  • Gestion d’état simplifiée
  • Réduction du code répétitif

Ces patterns permettent de concevoir des applications React plus flexibles, maintenables et performantes en favorisant la réutilisation et la séparation des responsabilités.

8. Patterns de rendu : client-side, server-side, statique et hybride

Le pattern PRPL se concentre sur quatre aspects clés de la performance : pousser efficacement les ressources critiques, rendre la route initiale au plus vite, pré-cacher les assets en arrière-plan, et charger paresseusement les routes ou ressources.

Optimisation des performances. Différents patterns de rendu visent à améliorer la performance des applications et l’expérience utilisateur :

  • Client-side Rendering (CSR) : rendu du contenu dans le navigateur
  • Server-side Rendering (SSR) : génération du HTML côté serveur
  • Static Rendering : pré-rendu du contenu lors de la compilation
  • Hybrid Rendering : combinaison de plusieurs approches

Considérations pour les patterns de rendu :

  • Temps de chargement initial et Time to Interactive (TTI)
  • Optimisation pour les moteurs de recherche (SEO)
  • Charge serveur et scalabilité
  • Fréquence de mise à jour du contenu

Le choix du pattern de rendu dépend des besoins spécifiques de l’application, en équilibrant performance, SEO et complexité de développement.

9. Bonnes pratiques pour la structure d’applications React évolutives

Respecter un pattern défini pour structurer un projet facilite son explication aux membres de l’équipe et évite que le projet ne devienne désorganisé ou inutilement complexe.

Structure de projet organisée. Mettre en place une structure claire et cohérente est essentiel pour maintenir des applications React évolutives. Les points clés à considérer sont :

  • Regrouper les fichiers par fonctionnalité ou module
  • Séparer les composants de présentation et les conteneurs
  • Adopter une convention de nommage claire
  • Utiliser des solutions adaptées de gestion d’état

Bonnes pratiques :

  • Garder les composants petits et ciblés
  • Employer des noms de dossiers explicites
  • Mettre en œuvre le chargement paresseux pour optimiser les performances
  • Maintenir des standards de codage cohérents

Une application React bien structurée améliore la maintenabilité du code, facilite la collaboration et renforce la scalabilité globale du projet.

Dernière mise à jour:

Report Issue

Résumé des avis

3.83 sur 5
Moyenne de 500+ évaluations de Goodreads et Amazon.

Learning Javascript Design Patterns suscite des avis partagés. Certains saluent sa couverture exhaustive des patrons de conception ainsi que ses exemples concrets, tandis que d’autres le jugent dépassé et trop centré sur des bibliothèques spécifiques. Les critiques positives soulignent son utilité pour les développeurs intermédiaires et sa pertinence qui perdure dans le temps. Parmi les reproches, on relève une édition parfois inégale, un contenu daté et une focalisation excessive sur jQuery. Nombre de lecteurs apprécient l’explication claire des patrons courants, mais estiment que ce livre n’est pas forcément le meilleur choix pour ceux qui recherchent des techniques JavaScript à la pointe. Dans l’ensemble, il est perçu comme une introduction solide aux patrons de conception, bien qu’avec certaines limites.

Your rating:
4.32
179 évaluations
Want to read the full book?

FAQ

What's Learning JavaScript Design Patterns about?

  • Focus on Design Patterns: The book provides a comprehensive guide to applying design patterns in JavaScript, especially for modern web applications.
  • Modern Context: It covers over 20 design patterns, including classical patterns and modern adaptations for frameworks like React, Vue, and Angular.
  • Best Practices: Emphasizes best practices for code organization, performance, and maintainability, making it valuable for developers at all levels.

Why should I read Learning JavaScript Design Patterns?

  • Enhance Code Quality: Understanding design patterns helps in writing cleaner, more maintainable code that is easier for other developers to understand.
  • Stay Current: Reflects the latest advancements in JavaScript, including ES2015+ features, ensuring you are up-to-date with modern practices.
  • Practical Examples: Includes practical examples and applications of design patterns, facilitating real-world application of the concepts.

What are the key takeaways of Learning JavaScript Design Patterns?

  • Understanding Patterns: Gain a deep understanding of various design patterns and how to apply them effectively in JavaScript.
  • Performance Optimization: Discusses performance patterns like code-splitting and server-side rendering, crucial for modern web applications.
  • Framework-Specific Patterns: Covers React-specific patterns like Hooks and Higher-Order Components, providing insights into best practices within popular frameworks.

How does Learning JavaScript Design Patterns address modern JavaScript features?

  • ES2015+ Syntax: Incorporates modern JavaScript syntax and features, such as classes, modules, and arrow functions, to illustrate design patterns.
  • Async/Await: Discusses asynchronous programming patterns using async/await, making it easier to handle asynchronous operations cleanly.
  • Performance Improvements: Highlights how modern features can optimize performance and improve code organization in web applications.

What are some important design patterns covered in Learning JavaScript Design Patterns?

  • Module Pattern: Organizes code into reusable modules, promoting encapsulation and separation of concerns.
  • Observer Pattern: Allows objects to subscribe to events and get notified of changes, facilitating a decoupled architecture.
  • Singleton Pattern: Restricts the instantiation of a class to a single instance, useful for managing shared resources.

Can you explain the Module pattern as described in Learning JavaScript Design Patterns?

  • Encapsulation: Encapsulates private variables and functions, exposing only the public API, which helps avoid global namespace pollution.
  • IIFE Usage: Often uses Immediately Invoked Function Expressions (IIFEs) to create a private scope for variables and methods.
  • Reusability: Organizes code into modules, allowing developers to create reusable components that are easily maintained and tested.

What is the significance of the Observer pattern in Learning JavaScript Design Patterns?

  • Decoupled Communication: Allows for a decoupled communication mechanism between objects, enabling them to react to changes without being tightly bound.
  • Real-World Applications: Provides examples of how the Observer pattern can be applied in modern frameworks, enhancing application responsiveness.
  • Event-Driven Architecture: Emphasizes the importance of event-driven architecture in JavaScript, crucial for building interactive web applications.

How does Learning JavaScript Design Patterns approach asynchronous programming patterns?

  • Promise Patterns: Covers various promise patterns, including chaining, parallel execution, and error handling, to manage asynchronous operations effectively.
  • Async/Await: Introduces async/await as a modern way to handle asynchronous code, making it easier to read and maintain.
  • Practical Examples: Provides practical examples demonstrating how to implement these patterns in real-world applications, enhancing understanding.

What are Higher-Order Components (HOCs) in React as discussed in Learning JavaScript Design Patterns?

  • Reusable Logic: HOCs are functions that take a component and return a new component with additional props or behavior, promoting logic reuse.
  • Example Usage: Provides examples of HOCs for adding features like loading indicators or styling to components, enhancing functionality.
  • Pros and Cons: While promoting code reuse, HOCs can lead to "wrapper hell" if overused, making the component tree complex.

What is the Render Props pattern in React?

  • Function as Prop: Involves passing a function as a prop to a component, which returns a React element, allowing for flexible rendering logic.
  • Example Implementation: Illustrates how to implement the Render Props pattern to share data between components, such as a temperature converter example.
  • Comparison to HOCs: Compared to HOCs, Render Props avoids prop name collisions and makes data flow more explicit, simplifying debugging.

How does Learning JavaScript Design Patterns address application structure for React?

  • Folder Organization: Discusses approaches to organizing files in a React application, such as grouping by feature or file type.
  • Hybrid Structures: Advocates for hybrid structures that combine benefits of both grouping methods, crucial for larger applications.
  • Best Practices: Provides best practices for structuring React applications, including the use of Redux, Hooks, and Styled Components.

What are some advanced patterns discussed in Learning JavaScript Design Patterns?

  • Islands Architecture: Focuses on creating isolated islands of interactivity within static pages, allowing efficient loading of dynamic components.
  • Progressive Hydration: Involves hydrating components incrementally based on user interaction, optimizing performance by reducing initial JavaScript payload.
  • Streaming SSR: Introduced as a method to send HTML to the client in smaller chunks, improving time to first paint and enhancing user experience.

À propos de l'auteur

Addy Osmani occupe le poste de Senior Staff Engineering Manager chez Google Chrome, où il dirige des équipes dédiées à l’amélioration de l’efficacité du développement web. Auteur de plusieurs ouvrages et conférencier régulier lors d’événements internationaux, il s’attache à rendre le web plus rapide et plus accessible aux développeurs. Sa maîtrise approfondie de JavaScript et des technologies web lui confère une reconnaissance certaine au sein de la communauté des développeurs. Par ses écrits et ses interventions, Osmani partage son savoir et ses réflexions, contribuant ainsi à faire progresser les pratiques et les techniques du développement web.

Follow
Écouter
Now playing
Learning JavaScript Design Patterns
0:00
-0:00
Now playing
Learning JavaScript Design Patterns
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Aujourd'hui : Accès immédiat
Écoutez les résumés complets de plus de 26 000 livres. Soit plus de 12 000 heures d'audio !
Jour 2 : Rappel d'essai
Nous vous enverrons une notification pour vous informer que votre essai se termine bientôt.
Jour 3 : Votre abonnement commence
Vous serez débité le Jun 11,
annulez à tout moment avant.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel