Refonte de l’espace client Bouygues Telecom
REX
Carl
Ogren
Stéphane
Bachelier
Backbone en 2016
?
seriously
????
Trends
- Maturité du projet : stable depuis 2013
-
- Modularité : préférence pour une librairie
- React : pas assez de recul
- Angular : non rétro compatibilité v1
Pourquoi
Backbone ?
Projet
-
1 espace client existant
~3 - 4 ans d'existence -
1 nouvel espace client
SPA Backbone
=> Migration sur 3 ans
nécessite la cohabitation des deux espaces
Timeline
Juillet
2015
Octobre
2015
Janvier
2016
début
dev
release
publique
ouverture
beta
Nouveau site
Existant
Migration
UX 2 sites ?
NON !
Iframeception
Ou les iframes à la rescousse
IFRAME ?
seriously ????
iFrame
- Depuis 1997
- Standard HTML5
- Mal-aimé mais très puissant
@rem DotJS 2013 pour les curieux
iFrame abuse
by @rem
window.postMessage({})
Liens existants
- ~60 liens à poser (iframe, onglet, ...)
- 4 profils utilisateurs
- peut être spécifique pour chaque lien
Liens existants
Behaviors
Behaviors
- View interactions
- portable logical chunks
- simple Views
- Don't Repeat Yourself
Behaviors
- Aucune logique dans les vues !
- => Uniquement de la configuration de liens
à quoi ça sert ?
Behaviors
<a
data-link-type="external"
data-link="mes-factures"
...
>...</a>
<a
data-link-type="external"
data-link="mes-factures"
...
>...</a>
<a
data-link-type="external"
data-link="mes-factures"
...
>...</a>
concrètement
Behaviors
<a
data-link="mes-factures"
href="/mon-compte/mes-factures"
target="_blank | _self | _parent | <name> "
...
>...</a>
<a
data-link="mes-factures"
href="/mon-compte/mes-factures"
target="_blank | _self | _parent | <name> "
...
>...</a>
comment configurer ?
1 - 0
Configuration
Configuration
- Des liens à préciser : path, query
- Un comportement : target, route, iframe
- Environnements : dev, staging, prod
- Des liens à préciser : path, query
- Un comportement : target, route, iframe
- Environnements : dev, staging, prod
Configuration
- Un format simple : YAML
- Surchargeable : mécanisme d'héritage
Tout est configurable !
features, routes, API endpoints, ...
2 - 0
{ Backbone.fetch() }
Bouygues Telecom
- plusieurs API
- pas toujours REST
- du JSONP
- avec certaines spécificités
Contexte
Backbone.Model
- API ~REST : gestion des URLS compliquées
- Deux rôles :
fetch et présentation de données - serialisation toJSON
Notre choix:
uniquement présentation de données
Backbone is pre-configured to sync with a RESTful API
fetch ()
-
surcharge de Backbone.Sync
-
utilisation de superagent (
$.ajax)
- surcouche avec superapi
fetch ()
Ce que l'on gagne :
Promise, configuration, middlewares, cache,
découplage réseau / application
Mission accomplished !
The Team
Conclusion
Backbone n'est pas à la mode
c'est grave docteur ?
Backbone n'est pas à la mode
c'est grave docteur ?
Backbone maintenu
1.3.3 : Avril 2016
Backbone & ES6 ES2015
c'est possible: Marionette V3
Backbone n'est pas à la mode
c'est grave docteur ?
Backbone maintenu
1.3.3 : Avril 2016
Backbone, Angular, React, ...
L'important c'est ce qu'on en fait
#EverythingIsAwesome
@CarlOgren
RasCarlito
@sbachelier
stephanebachelier
Rex Backbone Bouygues Telecom
By stephane bachelier
Rex Backbone Bouygues Telecom
- 2,562