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
Developing Backbone.js Applications

Developing Backbone.js Applications

Building Better JavaScript Applications
par Addy Osmani 2012 371 pages
3.70
188 évaluations
Écouter
Essayez l'accès complet pendant 3 jours
Débloquez l'écoute et bien plus !
Continuer

Points clés

1. Backbone.js apporte une structure aux applications JavaScript complexes

Backbone.js est une bibliothèque JavaScript légère qui organise votre code côté client.

Organisation et maintenabilité. Backbone.js répond au défi de construire des applications JavaScript complexes en proposant un cadre structuré. Il introduit les notions de modèles, vues et collections, qui permettent de séparer les responsabilités et d’organiser le code de manière logique. Cette structure facilite la gestion et la maintenance des applications à grande échelle, réduisant ainsi le risque de créer un « code spaghetti » difficile à déboguer et à faire évoluer.

Flexibilité et minimalisme. Contrairement à des frameworks plus contraignants, Backbone.js offre un ensemble minimal d’outils et de conventions, laissant aux développeurs la liberté d’implémenter leur propre architecture par-dessus sa base. Cette souplesse rend Backbone adapté à une grande variété de projets, des petites applications monopages aux systèmes d’entreprise complexes. La taille réduite de la bibliothèque (environ 7,6 Ko minifiée et compressée) garantit qu’elle n’alourdit pas significativement votre projet, ce qui séduit les développeurs soucieux des performances.

2. Modèles, vues et collections constituent le cœur des applications Backbone

Les modèles sont le noyau de toute application JavaScript, contenant les données interactives ainsi qu’une grande partie de la logique associée : conversions, validations, propriétés calculées et contrôle d’accès.

Gestion des données avec les modèles. Les modèles Backbone encapsulent les données et la logique métier, offrant une interface claire pour manipuler et valider les données. Ils peuvent être créés, récupérés, mis à jour et supprimés (opérations CRUD) indépendamment de l’interface utilisateur. Les modèles émettent des événements lorsque leurs données changent, permettant aux vues de se mettre à jour automatiquement.

Interface utilisateur avec les vues. Les vues Backbone sont chargées de rendre l’interface utilisateur et de gérer les interactions. Elles écoutent les événements des modèles et se réaffichent lorsque les données sous-jacentes évoluent. Cette séparation entre données (modèles) et présentation (vues) favorise un code plus maintenable et testable.

Collections de données. Les collections Backbone sont des ensembles ordonnés de modèles, offrant une API riche pour manipuler des tableaux de données. Elles permettent notamment :

  • Le tri et le filtrage des données
  • L’agrégation de données issues de plusieurs modèles
  • La synchronisation avec le serveur
  • L’émission d’événements lors de modifications de la collection

3. Le routage permet la fonctionnalité des applications monopages dans Backbone

Backbone.Router fournit des méthodes pour router les pages côté client et les relier à des actions et événements.

Navigation côté client. Le routeur Backbone permet de créer des applications monopages (SPA) en associant des URL à des fonctions. Cela offre aux utilisateurs une navigation fluide sans rechargement complet de la page, pour une expérience plus réactive et agréable.

Liens profonds et favoris. Grâce au routeur, les développeurs peuvent générer des URL signets correspondant à différents états de l’application. Les utilisateurs peuvent ainsi partager des vues spécifiques ou revenir facilement à des états précédents, améliorant l’ergonomie globale.

Gestion de l’historique. Le routeur Backbone s’intègre à l’API historique du navigateur, permettant d’utiliser les boutons retour et avant comme dans une application multi-pages classique. Cela préserve le comportement attendu tout en tirant parti des avantages de performance des SPA.

4. Le système d’événements favorise une communication découplée entre composants

Backbone.Events est un module que l’on peut intégrer à n’importe quel objet, lui conférant la capacité de lier et déclencher des événements personnalisés.

Couplage faible. Le système d’événements Backbone permet aux différentes parties d’une application de communiquer sans dépendance directe. Cela encourage la modularité et facilite la modification ou l’extension des fonctionnalités sans impacter l’ensemble du système.

Extensibilité. En utilisant des événements personnalisés, les développeurs peuvent ajouter aisément de nouvelles fonctionnalités ou comportements à des composants existants sans toucher à leur logique centrale. Backbone devient ainsi très extensible et adaptable aux évolutions.

Programmation réactive. Ce système facilite un style réactif où les changements dans une partie de l’application déclenchent automatiquement des mises à jour ailleurs. Cela conduit à des interfaces plus dynamiques et réactives, ainsi qu’à un code simplifié, sans gestion manuelle des états.

5. Le développement modulaire avec RequireJS améliore la maintenabilité

RequireJS implémente la spécification AMD, qui définit une méthode pour écrire du code modulaire et gérer les dépendances.

Gestion des dépendances. RequireJS permet de définir et gérer les dépendances entre différentes parties de l’application. Cela évite la pollution de l’espace global et facilite la compréhension et la maintenance des relations entre modules.

Organisation du code. En utilisant RequireJS, les développeurs peuvent structurer leurs applications Backbone en fichiers plus petits et plus maniables. Cela améliore la lisibilité du code et facilite le travail en équipe sur différentes parties du projet.

Optimisation pour la production. RequireJS inclut un outil d’optimisation (r.js) capable de combiner et minifier les modules pour le déploiement. Cela se traduit par des temps de chargement plus rapides et de meilleures performances pour les utilisateurs finaux.

6. L’intégration de jQuery Mobile étend Backbone aux plateformes mobiles

jQuery Mobile suit les principes d’amélioration progressive et de design web adaptatif, en s’appuyant sur des définitions et configurations basées sur le balisage HTML5.

Développement multiplateforme. L’association de jQuery Mobile à Backbone permet de créer des applications mobiles avec un ensemble d’outils familier. Cela facilite le développement d’applications compatibles avec une large gamme d’appareils et de tailles d’écran.

Amélioration progressive. L’approche de jQuery Mobile garantit que les applications restent fonctionnelles sur des appareils anciens tout en offrant une expérience enrichie sur des plateformes plus performantes. Cette philosophie s’accorde parfaitement avec la flexibilité de Backbone, permettant de concevoir des applications qui s’adaptent harmonieusement à différents environnements.

Composants UI spécifiques au mobile. jQuery Mobile propose un ensemble de composants d’interface optimisés pour le tactile, facilement intégrables dans les vues Backbone. Cela accélère le développement mobile et assure une expérience cohérente et proche du natif sur diverses plateformes.

7. Tester les applications Backbone assure fiabilité et facilite la maintenance

Le test unitaire consiste à isoler la plus petite portion testable du code d’une application et à vérifier qu’elle se comporte exactement comme prévu.

Qualité de code améliorée. Écrire des tests pour les applications Backbone permet de détecter les bugs dès les premières phases de développement et de garantir que chaque composant fonctionne correctement. Cela conduit à des applications plus fiables et stables.

Confiance lors du refactoring. Une suite de tests complète donne aux développeurs l’assurance de pouvoir refondre et améliorer leur code sans craindre d’introduire des régressions. C’est particulièrement crucial dans Backbone, où des modifications sur les modèles ou collections peuvent avoir des répercussions étendues.

Documentation par les tests. Des tests bien conçus servent de documentation sur le comportement attendu des différentes parties d’une application Backbone. Cela s’avère précieux pour l’intégration de nouveaux membres dans l’équipe ou pour comprendre des interactions complexes.

Parmi les frameworks et outils de test pour Backbone, on trouve :

  • Jasmine : un framework de développement piloté par le comportement pour tester le code JavaScript
  • QUnit : une suite de tests JavaScript puissante souvent utilisée avec Backbone
  • SinonJS : une bibliothèque pour créer des espions, stubs et mocks dans les tests JavaScript

Dernière mise à jour:

Report Issue

Résumé des avis

3.70 sur 5
Moyenne de 188 évaluations de Goodreads et Amazon.

Développer des applications avec Backbone.js suscite des avis partagés, avec une note moyenne de 3,69 sur 5. Les lecteurs apprécient sa couverture complète de Backbone.js et des technologies associées, soulignant la progression logique et la qualité des exemples proposés. Toutefois, certains estiment qu’il s’adresse davantage à des utilisateurs intermédiaires ou avancés qu’aux débutants. Les critiques pointent du doigt un contenu parfois daté, des exemples de code incomplets et un manque d’explications approfondies. Malgré ces limites, beaucoup considèrent ce livre comme une ressource précieuse pour apprendre Backbone.js, surtout lorsqu’il est complété par une pratique régulière et des documents supplémentaires.

Your rating:
4.23
102 évaluations
Want to read the full book?

FAQ

1. What is "Developing Backbone.js Applications" by Addy Osmani about?

  • Comprehensive Backbone.js guide: The book offers an in-depth introduction to Backbone.js, a lightweight JavaScript framework for structuring client-side web applications.
  • Core concepts covered: It explains models, views, collections, routers, and how to build maintainable, modular single-page applications (SPAs).
  • Hands-on learning: Readers are guided through practical projects like a Todo app and a Book Library app, with step-by-step exercises and real-world examples.
  • Advanced topics included: The book also explores modular development, RESTful integration, testing, optimization, and popular Backbone extensions.

2. Why should I read "Developing Backbone.js Applications" by Addy Osmani?

  • Improve client-side architecture: The book demonstrates how Backbone.js helps organize complex JavaScript-heavy applications, making code more maintainable and scalable.
  • Practical, real-world skills: Through detailed examples and exercises, readers learn to build, test, and optimize real applications using Backbone and related tools.
  • Covers advanced and common challenges: It addresses issues like modularization, memory management, and integration with other libraries, providing solutions for common Backbone.js pitfalls.
  • Open and community-driven resource: Released under a Creative Commons license, the book encourages community contributions and is accessible to novice and intermediate developers.

3. What are the key takeaways from "Developing Backbone.js Applications" by Addy Osmani?

  • Minimalist, flexible architecture: Backbone.js provides just enough structure—models, collections, views, and routers—without enforcing rigid patterns, allowing developers to adapt it to their needs.
  • Event-driven and RESTful: The framework’s event system keeps data and UI in sync, and it integrates easily with RESTful APIs for server communication.
  • Modular and scalable development: The book emphasizes modular code organization using AMD and RequireJS, making large applications maintainable and efficient.
  • Testing and optimization: Readers learn best practices for testing with Jasmine and QUnit, and for optimizing production builds with tools like r.js.

4. What are the best quotes from "Developing Backbone.js Applications" and what do they mean?

  • Minimal set of primitives: “The essential premise at the heart of Backbone has always been to try and discover the minimal set of data-structuring (Models and Collections) and user interface (Views and URLs) primitives that are useful when building web applications with JavaScript.” This highlights Backbone’s philosophy of simplicity and sufficiency.
  • Embracing new perspectives: “One’s destination is never a place, but a new way of seeing things.” — Henry Miller. This quote encourages developers to adopt new approaches, like Backbone, to improve their craft.
  • Importance of namespacing: “Without strong namespacing conventions, it is also fairly easy to pollute the global namespace with your own custom objects.” This underscores the need for modularity and clean code organization in JavaScript.

5. How does "Developing Backbone.js Applications" by Addy Osmani explain the MVC pattern and Backbone’s MV* approach?

  • MVC basics explained: The book describes MVC as separating concerns into Models (data), Views (UI), and Controllers (input handling), with clear communication between components.
  • Backbone’s MV variation:* Backbone merges controller responsibilities into views and uses routers for navigation, making it an MV* rather than strict MVC framework.
  • Event-driven updates: Models and views communicate via an event system, keeping data and UI synchronized without direct coupling.
  • Templating and routing: Views render templates (like Underscore or Handlebars), and routers manage application state and navigation for SPAs.

6. How do Backbone.js models, views, collections, and routers work according to Addy Osmani’s book?

  • Models: Hold data attributes, support defaults and validation, and can persist data to a server using RESTful methods like save(), fetch(), and destroy().
  • Views: Manage UI logic, render templates, and handle DOM events declaratively, listening to model changes to update the interface.
  • Collections: Ordered sets of models with utility methods for adding, removing, filtering, and sorting, and can fetch data from servers.
  • Routers: Map URL fragments to functions, enabling bookmarkable states and navigation in single-page applications.

7. What are the key features and benefits of Backbone.js highlighted in "Developing Backbone.js Applications"?

  • Lightweight and flexible: Backbone provides minimal structure, allowing developers to build applications in their preferred style.
  • Event-driven and RESTful: Rich event handling between models and views, and seamless integration with RESTful APIs for data persistence.
  • Modular and scalable: Scales from small widgets to large applications, and works well with other libraries and frameworks.
  • Readable and efficient: The source code is small and accessible, making it easy for developers to understand and extend.

8. How does Addy Osmani’s book guide building a Todo application with Backbone.js?

  • Step-by-step architecture: The book walks through creating Todo models, collections, and views, demonstrating CRUD operations and UI binding.
  • Templates and events: Uses Underscore.js templates for rendering and declarative event handling for user interactions like adding, editing, and deleting todos.
  • Persistence with localStorage: Shows how to use Backbone.localStorage to persist data in the browser without a server.
  • Routing and filtering: Implements URL-based filtering (all, active, completed) using Backbone.Router for bookmarkable app states.

9. How does "Developing Backbone.js Applications" by Addy Osmani recommend integrating Backbone.js with a RESTful backend?

  • Separation of concerns: The frontend Backbone app communicates with a Node.js/Express REST API backend, modeling real-world client-server interaction.
  • Model and collection setup: Models and collections are configured with URLs pointing to the REST API, enabling fetch(), save(), and destroy() to sync with the server.
  • Handling nested data: The book addresses challenges like date formatting and nested attributes, showing how to parse and serialize data correctly.
  • Server-side implementation: Guides setting up a MongoDB-backed REST API with CRUD routes, connecting Backbone apps to persistent storage.

10. What are MarionetteJS and Thorax, and how do they extend Backbone.js as described in Addy Osmani’s book?

  • MarionetteJS: A composite application library that reduces boilerplate, manages memory and view lifecycles, and provides specialized view types and regions for layout management.
  • Boilerplate reduction: Automates rendering logic and view cleanup, preventing memory leaks and zombie views.
  • Thorax: An opinionated framework built on Backbone, using Handlebars templating and offering conventions for app organization and embedding child views.
  • Flexibility and modularity: Both extensions allow developers to scale Backbone apps with better structure and maintainability, integrating seamlessly with existing code.

11. How does "Developing Backbone.js Applications" by Addy Osmani recommend modularizing applications using RequireJS and AMD?

  • Asynchronous module loading: RequireJS loads JavaScript files asynchronously, improving performance and enabling dynamic module loading.
  • AMD module definition: Modules are defined with define(), specifying dependencies and a factory function for clean dependency management.
  • External templates and shimming: Uses RequireJS’s text.js plug-in for external templates and configures shims for non-AMD libraries like Backbone and Underscore.
  • Organizing code: Encourages separating models, views, collections, and routers into folders, wrapping components as AMD modules for maintainability.

12. How does Addy Osmani’s book approach testing Backbone.js applications with Jasmine, QUnit, and SinonJS?

  • Jasmine for BDD: Introduces Jasmine as a behavior-driven development framework for writing readable, automated unit tests with suites, specs, and spies.
  • Testing models, collections, and views: Provides examples for testing defaults, validation, filtering, rendering, and DOM integration, using jasmine-jquery for fixtures.
  • Asynchronous and spy support: Shows how to mock AJAX requests and write asynchronous tests, ensuring thorough client-server interaction testing.
  • Comparison with QUnit and SinonJS: Explains QUnit’s straightforward assertions and modules, and how SinonJS adds spies, stubs, and mocks for detailed function call inspection.

À 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é et des performances du développement web. Auteur de plusieurs ouvrages et conférencier régulier lors d’événements internationaux, il s’est spécialisé dans l’optimisation de la rapidité et de l’accessibilité du développement web pour les développeurs. Son travail chez Google Chrome consiste à simplifier le processus de création web tout en renforçant les capacités de la plateforme. Fort de son expérience approfondie et de ses nombreuses contributions, Osmani s’est imposé comme une figure respectée au sein de la communauté du développement web, reconnu pour ses analyses pertinentes et ses approches pragmatiques des technologies web modernes.

Follow
Écouter
Now playing
Developing Backbone.js Applications
0:00
-0:00
Now playing
Developing Backbone.js Applications
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 12,
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