Transcript
Page 1: Templating en JavaScript

Templating en JavaScript

2023-04-12 Templating JavaScript 1

Mathieu PARISOT – Développeur Java

@matparisot

+Parisot Mathieu

Page 2: Templating en JavaScript

Pourquoi ce talk ?test.js :$.ajax({ url: 'test.json', success: function(data) {

}}):

2023-04-12 Templating JavaScript 2

test.json :{ name : 'world'}

var html = 'hello ' + data.name;$('#myElem').html(html);

Page 3: Templating en JavaScript

Dans la vraie vie{ users: [ { lastname:'Parisot', firstname:'Mathieu', address:{ street:'4 rue secrète', zipcode:'75000', city:'Paris' } },2023-04-12 Templating JavaScript 3

{ lastname:'Dupont', firstname:'Jean', address:{ street:'4 rue machin', zipcode:'75000', city:'Paris' } }, … ]}

Page 4: Templating en JavaScript

Et donc on obtient…var html = '';for(var i=0;i<data.users.length;i++) { var user = data.users[i]; html += '<div>Hello <span>'; html += user.lastname + ' ' + user.firstname; html += '</span></div>'; if(user.address) { html + '<div>You live in :'; html += '<div>' + user.address.street + '</div>'; html += '<div>' + user.address.zipcode + ' ' + user.address.city + '</div>'; html + '</div>'; }}$('#myElem').insert(html);

2023-04-12 Templating JavaScript 4

Page 5: Templating en JavaScript

Un beau jour…

2023-04-12 Templating JavaScript 5

Good news everyone !Le JSON a changé !

Page 6: Templating en JavaScript

En voyant le JavaScript

2023-04-12 Templating JavaScript 6

Page 7: Templating en JavaScript

5 minutes plus tard !

2023-04-12 Templating JavaScript 7

Page 8: Templating en JavaScript

Une recherche s'impose !

2023-04-12 Templating JavaScript 8

Page 9: Templating en JavaScript

2023-04-12 Templating JavaScript 9

Stackoverflowvar html = [];for(var i=0; i < data.users.length; i++) { var user = data.users[i]; html.push('<div>'); html.push('Hello '); html.push('<span>'); html.push(user.lastname); html.push(' '); html.push(user.firstname); html.push('</span>'); html.push('</div>');}$('#myElem').insert(html.join(''));

Page 10: Templating en JavaScript

Pas convaincu ?

2023-04-12 Templating JavaScript 10

Moi non plus..

Page 11: Templating en JavaScript

Et si on passait au templating ?

2023-04-12 Templating JavaScript 11

{{#each users}} <div> Hello <span>{{lastname}} {{firstname}}</span> </div> {{#if address}} <div>You live in : <div>{{street}}</div><div>{{zipcode}} {{city}}</div> </div> {{/if}}{{/each}}

Page 12: Templating en JavaScript

Qu'en pense notre développeur ?

2023-04-12 Templating JavaScript 12

Plus maintenable

Plus simple

Début de MVC

J'approuve !

Page 13: Templating en JavaScript

Où mettre ses templates ?

2023-04-12 Templating JavaScript 13

Page 14: Templating en JavaScript

Directement dans le JavaScript

var myTemplate = 'Hello {{name}}';…var result = applyTemplate(myTemplate, data);$('#myElem').html(result);

2023-04-12 Templating JavaScript 14

Simple Pas maintenablePas réutilisable

Page 15: Templating en JavaScript

Directement dans le html

<script type="text/template" id="tpl"> Hello {{name}}</script>var result = applyTemplate($('#tpl').text(), data);$('#myElem').html(result);

2023-04-12 Templating JavaScript 15

Simple Pas réutilisable

Maintenable

Page 16: Templating en JavaScript

Directement un fichier séparé

$.get('template.html', function(template){ var result = applyTemplate(template, data); $('#myElem').html(result);});

2023-04-12 Templating JavaScript 16

Réutilisable

Maintenable Requête en plus

Asynchrone

Page 17: Templating en JavaScript

Les librairies

Mustache vs Handlebars vs doT vs the world

2023-04-12 Templating JavaScript 17

Page 18: Templating en JavaScript

Mustache.js

2023-04-12 Templating JavaScript 18

http://mustache.github.com/

Multi-langage

Très répandu

Bien documenté

Lent

Syntaxe

Page 19: Templating en JavaScript

La syntaxe

2023-04-12 Templating JavaScript 19

{{#users}} <div> Hello <span>{{lastname}} {{firstname}}</span> </div> {{#address}} <div>You live in : <div>{{street}}</div><div>{{zipcode}} {{city}}</div> </div> {{/address}}{{/users}}

Page 20: Templating en JavaScript

handlebars.js

2023-04-12 Templating JavaScript 20

http://handlebarsjs.com/

Syntaxe

Assez répandu

Très bien documenté

Compatible Mustache

Page 21: Templating en JavaScript

La syntaxe

2023-04-12 Templating JavaScript 21

{{#each users}} <div> Hello <span>{{lastname}} {{firstname}}</span> </div> {{#if address}} <div>You live in : <div>{{street}}</div><div>{{zipcode}} {{city}}</div> </div> {{/if}}{{/each}}

Page 22: Templating en JavaScript

doT.js

2023-04-12 Templating JavaScript 22

http://olado.github.com/doT/

Syntaxe

Simple Peu répandu

Minimaliste

Concis et léger

Rapide

Page 23: Templating en JavaScript

La syntaxe

2023-04-12 Templating JavaScript 23

{{~ it.users}} <div> Hello <span>{{= lastname}} {{= firstname}}</span> </div> {{? address}} <div>You live in : <div>{{=street}}</div><div>{{=zipcode}} {{=city}}</div> </div> {{?}}{{~}}

Page 24: Templating en JavaScript

Mais aussi…

2023-04-12 Templating JavaScript 24

http://code.google.com/p/kite/

http://underscorejs.org/

https://github.com/aefxx/jQote2

Et plein d'autres…

Page 25: Templating en JavaScript

En conclusion

2023-04-12 Templating JavaScript 25

Le templating c'est bon mangez-en !

Page 26: Templating en JavaScript

Merci

Des questions ?

2023-04-12 Templating JavaScript 26


Top Related