SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Rasez cette moustache guidon
Benoit Marchant

CEO & Founder
montagestudio.com
@montagejs
✉ benoit@montagestudio.com
Pour l’élégance des modèles
orienté composant de Montage
Shave that handlebar moustache
Modèle (template)
1. Forme de référence en métal, bois, carton,
plastique, ou autre materiau à partir de
laquelle sont créés des objets qui
présentent des caractéristiques communes,
en peinture, découpe, où perçage
Modèle (template)
1. Forme de référence en métal, bois, carton,
plastique, ou autre materiau à partir de
laquelle sont créés des objets qui
présentent des caractéristiques communes,
en peinture, découpe, où perçage
2. Informatique: un modèle de document,
pouvant contenir des images, du texte et
des éléments de formatage, qui est
souvent utilisé pour créer d'autres
d o c u m e n t s , p a r u n s i m p l e a j o u t
d'informations, afin de permettre à
l'utilisateur de gagner du temps
Modèle (template)
DRY
*
Don’t Repeat Yourself*
Serveurs d’applications classiques
Navigateur Serveur
Modèles
Données
{%}
HTML
HTTP
Importants aspects des modèles
Hautes performances sur mobile60fps
Importants aspects des modèles
Hautes performances sur mobile
Expressifs: Boucle, Condition, Propriétaire
?
Importants aspects des modèles
Hautes performances sur mobile
Expressifs: Boucle, Condition, Propriétaire
Composabilité
Importants aspects des modèles
Hautes performances sur mobile
Expressifs: Boucle, Condition, Propriétaire
Composabilité
Séparation des préoccupations
JSCSS HTML
Ap
Importants aspects des modèles
Hautes performances sur mobile
Expressifs: Boucle, Condition, Propriétaire
Composabilité
Séparation des préoccupations
Travail d’équipe efficace
Hautes performances sur mobile
Expressifs: Boucle, Condition, Propriétaire
Composabilité
Séparation des préoccupations
Travail d’équipe efficace
Modèles basés sur le texte
Les Modèles de Montage
Document HTML5 valides
Orienté Composants
Sérialisation d’objets, dépendances CommonJS
Séparation des préocupations JS/CSS
Travail d’équipe simplifié entres rôles JS/CSS
Penser le CSS pour la réutilisabilité
Hautes performances
CSSJSHTML
.reel
CSS
Penser le CSS pour la réutilisabilité
Ne pas utiliser l’attribut “id”
Attention, le CSS est global au niveau du document
Convention:
JSHTML
package-Component
package-Component-childElement
package-Component--variation
.digit-Progress
.digit-Progress-bar
.digit-Progress—-small
.reel
Composant
Controle un élement DOM
MVC - Model View Controller
Controles d’interface et structure d’Application
Peut avoir un modèle HTML
Structure des
composants
Composant Main
Charge les donnés d’un service REST
Délègue l’affichage aux sous-composants
Composant moviestrip
Composant categories
Composant details
moviestrip
categories
Les composants acceptent les données
via propriétés ou appel de méthodes
Main sélection
Movie Categories
Category sélectionnée
Main
Category sélectionnée
Movie Categories
sélection
Propagation des données
Composant moviestrip
Composant detail
movie
categoryContentController.selection.one()
data binding
<html>
...
<body>
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="movieFlow" class="flow flow-fade-out">
<div data-montage-id="image" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
</body>
</html>
Main.reel/Main.html
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="movieFlow" class="flow flow-fade-out">
<div data-montage-id="image" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
Markup
Sérialisation d’objets
<script type="text/montage-serialization">
{
"owner": {
"properties": {
"element": {"#": "facade-flow"}
}
},
...
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="flow" class="flow flow-fade-out">
<div data-montage-id="image" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
<script type="text/montage-serialization">
{
"owner": {
"properties": {
"element": {"#": "facade-flow"}
}
},
...
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="movieFlow" class="flow flow-fade-out">
<div data-montage-id="image" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
Le composant Flow répète son modèle imbriqué
Vous pouvez répéter tout composant
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="flow" class="flow flow-fade-out">
<div data-montage-id="poster" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
"poster": {
"prototype": “./image.reel",
"properties": {
"element": {"#": "poster"}
},
"bindings": {
"src": {
"<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path"
}
}
},
posters: {
detailed: { }},
"poster": {
"prototype": “./image.reel",
"properties": {
"element": {"#": "poster"}
},
"bindings": {
"src": {
"<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path"
}
}
},
[ ]
"poster": {
"prototype": “./image.reel",
"properties": {
"element": {"#": "poster"}
},
"bindings": {
"src": {
"<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path"
}
}
},
posters: {
detailed: { }},[ ]
<div data-montage-id="facade-flow" class="facade-flow">
<div data-montage-id="flow" class="flow flow-fade-out">
<div data-montage-id="image" class="Image"></div>
</div>
<div class="film"></div>
<div data-montage-id="details"></div>
</div>
"details": {
"prototype": "ui/details.reel",
"properties": {
"element": {"#": "details"}
},
"bindings": {
"movie": {"<-": "@moviestrip.categoryContentController.selection.one()" }
}
},
Composant detail
Composant detail
Title
Synopsis
Trailer Button
Rent Button
Release Date Runtime Audience Critics
detail
Title
Description
Date Runtime Audience
Critics
Trailer Button
Rent Button
movie.title
movie.date
actionEvent
actionEvent
movie.criticScore
movie.synopsis
movie.runtime
movie.audienceScore
ON AIRTRAININGON AIR
Démonstration
Notre workstation transmet vos modifications
sur le project, en temps réel, par le cloud, aux
instances de votre application, sur tout
appareil connecté. Vous pouvez collaborer
avec d’autres personnes où qu’elles soient, et
voir l’effet de vos changements, en situation,
i n st a n t a n é m e n t , u n e fo n c t i o n n a l i té
exceptionnelle pour développer des
applications adaptables à toute taille d’écran.
Document HTML5 valides
Orienté Composants
Séparation des préocupations JS/CSS
Utilise des standards disponibles partout
Travail d’équipe simplifié entres rôles JS/CSS
Productivité accélérée
Hautes performances
CSS
Les modèles de Montage
JSHTML
.reel
Rasez cette moustache guidon
Benoit Marchant

CEO & Founder
montagestudio.com
@montagejs
✉ benoit@montagestudio.com
Pour l’élégance des modèles
orienté composant de Montage
Shave that handlebar moustache

Contenu connexe

Similaire à Rasez cette moustache guidon

seance3-1 CSS.ppt
seance3-1 CSS.pptseance3-1 CSS.ppt
seance3-1 CSS.pptAmineReal
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Langage HTML - Fondamentaux et ateliers
Langage HTML - Fondamentaux et ateliersLangage HTML - Fondamentaux et ateliers
Langage HTML - Fondamentaux et ateliersFrédéric Simonet
 
Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09Claude Coulombe
 
Intégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesIntégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesRaphaël Goetter
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Microsoft Technet France
 
Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !davrous
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebMicrosoft
 
technologie web - part2
technologie web - part2technologie web - part2
technologie web - part2Benoît Simard
 
Eclipse Party Toulouse - EEF and Acceleo
Eclipse Party Toulouse - EEF and AcceleoEclipse Party Toulouse - EEF and Acceleo
Eclipse Party Toulouse - EEF and Acceleofmadiot
 
Document et structure : vers un web socio-sémantique
Document et structure : vers un web socio-sémantiqueDocument et structure : vers un web socio-sémantique
Document et structure : vers un web socio-sémantiqueherve.info.unicaen.fr
 
Un site Web de qualité
Un site Web de qualitéUn site Web de qualité
Un site Web de qualitémastertic
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
D3 js-last
D3 js-lastD3 js-last
D3 js-lastTECOS
 

Similaire à Rasez cette moustache guidon (20)

seance3-1 CSS.ppt
seance3-1 CSS.pptseance3-1 CSS.ppt
seance3-1 CSS.ppt
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
CSS 3
CSS 3CSS 3
CSS 3
 
Langage HTML - Fondamentaux et ateliers
Langage HTML - Fondamentaux et ateliersLangage HTML - Fondamentaux et ateliers
Langage HTML - Fondamentaux et ateliers
 
Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09
 
Intégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudesIntégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudes
 
Atelier template
Atelier templateAtelier template
Atelier template
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !
 
Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !
 
html-css-casuhal.pdf
html-css-casuhal.pdfhtml-css-casuhal.pdf
html-css-casuhal.pdf
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
 
technologie web - part2
technologie web - part2technologie web - part2
technologie web - part2
 
Eclipse Party Toulouse - EEF and Acceleo
Eclipse Party Toulouse - EEF and AcceleoEclipse Party Toulouse - EEF and Acceleo
Eclipse Party Toulouse - EEF and Acceleo
 
Document et structure : vers un web socio-sémantique
Document et structure : vers un web socio-sémantiqueDocument et structure : vers un web socio-sémantique
Document et structure : vers un web socio-sémantique
 
Un site Web de qualité
Un site Web de qualitéUn site Web de qualité
Un site Web de qualité
 
HTML5, le nouveau buzzword
HTML5, le nouveau buzzwordHTML5, le nouveau buzzword
HTML5, le nouveau buzzword
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
D3 js-last
D3 js-lastD3 js-last
D3 js-last
 

Rasez cette moustache guidon

  • 1. Rasez cette moustache guidon Benoit Marchant CEO & Founder montagestudio.com @montagejs ✉ benoit@montagestudio.com Pour l’élégance des modèles orienté composant de Montage Shave that handlebar moustache
  • 2. Modèle (template) 1. Forme de référence en métal, bois, carton, plastique, ou autre materiau à partir de laquelle sont créés des objets qui présentent des caractéristiques communes, en peinture, découpe, où perçage
  • 3. Modèle (template) 1. Forme de référence en métal, bois, carton, plastique, ou autre materiau à partir de laquelle sont créés des objets qui présentent des caractéristiques communes, en peinture, découpe, où perçage
  • 4. 2. Informatique: un modèle de document, pouvant contenir des images, du texte et des éléments de formatage, qui est souvent utilisé pour créer d'autres d o c u m e n t s , p a r u n s i m p l e a j o u t d'informations, afin de permettre à l'utilisateur de gagner du temps Modèle (template) DRY * Don’t Repeat Yourself*
  • 5. Serveurs d’applications classiques Navigateur Serveur Modèles Données {%} HTML HTTP
  • 6.
  • 7. Importants aspects des modèles Hautes performances sur mobile60fps
  • 8. Importants aspects des modèles Hautes performances sur mobile Expressifs: Boucle, Condition, Propriétaire ?
  • 9. Importants aspects des modèles Hautes performances sur mobile Expressifs: Boucle, Condition, Propriétaire Composabilité
  • 10. Importants aspects des modèles Hautes performances sur mobile Expressifs: Boucle, Condition, Propriétaire Composabilité Séparation des préoccupations JSCSS HTML
  • 11. Ap Importants aspects des modèles Hautes performances sur mobile Expressifs: Boucle, Condition, Propriétaire Composabilité Séparation des préoccupations Travail d’équipe efficace
  • 12. Hautes performances sur mobile Expressifs: Boucle, Condition, Propriétaire Composabilité Séparation des préoccupations Travail d’équipe efficace Modèles basés sur le texte
  • 13. Les Modèles de Montage Document HTML5 valides Orienté Composants Sérialisation d’objets, dépendances CommonJS Séparation des préocupations JS/CSS Travail d’équipe simplifié entres rôles JS/CSS Penser le CSS pour la réutilisabilité Hautes performances CSSJSHTML .reel
  • 14. CSS Penser le CSS pour la réutilisabilité Ne pas utiliser l’attribut “id” Attention, le CSS est global au niveau du document Convention: JSHTML package-Component package-Component-childElement package-Component--variation .digit-Progress .digit-Progress-bar .digit-Progress—-small .reel
  • 15. Composant Controle un élement DOM MVC - Model View Controller Controles d’interface et structure d’Application Peut avoir un modèle HTML
  • 17. Composant Main Charge les donnés d’un service REST Délègue l’affichage aux sous-composants
  • 19. moviestrip categories Les composants acceptent les données via propriétés ou appel de méthodes Main sélection Movie Categories Category sélectionnée
  • 21. Propagation des données Composant moviestrip Composant detail movie categoryContentController.selection.one() data binding
  • 22. <html> ... <body> <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="movieFlow" class="flow flow-fade-out"> <div data-montage-id="image" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> </body> </html> Main.reel/Main.html
  • 23. <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="movieFlow" class="flow flow-fade-out"> <div data-montage-id="image" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> Markup Sérialisation d’objets <script type="text/montage-serialization"> { "owner": { "properties": { "element": {"#": "facade-flow"} } }, ...
  • 24. <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="flow" class="flow flow-fade-out"> <div data-montage-id="image" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> <script type="text/montage-serialization"> { "owner": { "properties": { "element": {"#": "facade-flow"} } }, ...
  • 25.
  • 26.
  • 27.
  • 28. <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="movieFlow" class="flow flow-fade-out"> <div data-montage-id="image" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> Le composant Flow répète son modèle imbriqué Vous pouvez répéter tout composant
  • 29. <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="flow" class="flow flow-fade-out"> <div data-montage-id="poster" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> "poster": { "prototype": “./image.reel", "properties": { "element": {"#": "poster"} }, "bindings": { "src": { "<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path" } } },
  • 30. posters: { detailed: { }}, "poster": { "prototype": “./image.reel", "properties": { "element": {"#": "poster"} }, "bindings": { "src": { "<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path" } } }, [ ]
  • 31. "poster": { "prototype": “./image.reel", "properties": { "element": {"#": "poster"} }, "bindings": { "src": { "<-": "'http://image.tmdb.org/t/p/w300' + @movieFlow:iteration.object.poster_path" } } }, posters: { detailed: { }},[ ]
  • 32. <div data-montage-id="facade-flow" class="facade-flow"> <div data-montage-id="flow" class="flow flow-fade-out"> <div data-montage-id="image" class="Image"></div> </div> <div class="film"></div> <div data-montage-id="details"></div> </div> "details": { "prototype": "ui/details.reel", "properties": { "element": {"#": "details"} }, "bindings": { "movie": {"<-": "@moviestrip.categoryContentController.selection.one()" } } },
  • 34. Composant detail Title Synopsis Trailer Button Rent Button Release Date Runtime Audience Critics
  • 35. detail Title Description Date Runtime Audience Critics Trailer Button Rent Button movie.title movie.date actionEvent actionEvent movie.criticScore movie.synopsis movie.runtime movie.audienceScore
  • 36. ON AIRTRAININGON AIR Démonstration Notre workstation transmet vos modifications sur le project, en temps réel, par le cloud, aux instances de votre application, sur tout appareil connecté. Vous pouvez collaborer avec d’autres personnes où qu’elles soient, et voir l’effet de vos changements, en situation, i n st a n t a n é m e n t , u n e fo n c t i o n n a l i té exceptionnelle pour développer des applications adaptables à toute taille d’écran.
  • 37.
  • 38. Document HTML5 valides Orienté Composants Séparation des préocupations JS/CSS Utilise des standards disponibles partout Travail d’équipe simplifié entres rôles JS/CSS Productivité accélérée Hautes performances CSS Les modèles de Montage JSHTML .reel
  • 39. Rasez cette moustache guidon Benoit Marchant CEO & Founder montagestudio.com @montagejs ✉ benoit@montagestudio.com Pour l’élégance des modèles orienté composant de Montage Shave that handlebar moustache