Upgrade to Pro — share decks privately, control downloads, hide ads and more …

L'avenir passe par les Web Components, la preuv...

L'avenir passe par les Web Components, la preuve par dix !

Templating, encapsulation, éléments customs, databinding... La standardisation est en marche : Bienvenue aux Web Components. En 10 points, je vous montrerai ce qui est en train de se préparer dans vos navigateurs et ce que cela va nous permettre à nous, développeurs.

Julien Vey

April 09, 2013
Tweet

More Decks by Julien Vey

Other Decks in Programming

Transcript

  1. <template id="mytemplate"> <img src=""> <div class="comment"></div> </template> parsé mais PAS

    AFFICHÉ <script> ne s’EXÉCUTENT PAS <img> ne se CHARGENT PAS
  2. <video controls="" height="300" src="/ma/super/video"> #shadow-root <div> <div> <div> <input type="button">

    <input type="range" precision="float" max="596.48"> <div style="display: none;">0:00</div><div>9:56</div> <input type="button"> <input type="range" precision="float" max="1" style=""> <input type="button" style="display: none;"> <input type="button" style=""> </div> </div> </div> </video> SHADOW DOM
  3. <template> <h1>Les Human Talks c’est ça :</h1> <content></content> <h1>Et c’est

    génial !</h1> </template> <div id="humantalks"> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> </div> INSERTION POINTS
  4. <template> <h1>Les Human Talks c’est ça :</h1> <content></content> <h1>Et c’est

    génial !</h1> </template> <div id="humantalks"> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> </div> <div id="humantalks"> #shadow-root <h1>Les Human Talks c’est ça :</h1> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> <h1>Et c’est génial</h1> </div> INSERTION POINTS
  5. <h1>Bienvenue</h1> <div id="humantalks"> #shadow-root <h1>Les Human Talks c’est ça :</h1>

    <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> <h1>Et c’est génial</h1> </div>
  6. <h1>Bienvenue</h1> <div id="humantalks"> #shadow-root <style>h1 { color : red }</style>

    <h1>Les Human Talks c’est ça :</h1> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> <h1>Et c’est génial</h1> </div>
  7. <h1>Bienvenue</h1> <div id="humantalks"> #shadow-root <style>h1 { color : red }</style>

    <h1>Les Human Talks c’est ça :</h1> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> <h1>Et c’est génial</h1> </div>
  8. <h1>Bienvenue</h1> <div id="humantalks"> #shadow-root <style>h1 { color : red }</style>

    <h1>Les Human Talks c’est ça :</h1> <div>Web Components</div> <div>Vert.x</div> <div>Hack Yourself</div> <div>Montez votre boîte</div> <div>Be a VRP</div> <h1>Et c’est génial</h1> </div>
  9. CUSTOM ELEMENTS <element name="x-megabutton" extends="button" constructor="MegaButton"> <template> <button><content></content></button> </template> <script>

    MegaButton.prototype = { megaClick: function(e) { play('moo.mp3'); } }; </script> </element> <link rel="component" href="x-megabutton.html">
  10. CUSTOM ELEMENTS <element name="x-megabutton" extends="button" constructor="MegaButton"> <template> <button><content></content></button> </template> <script>

    MegaButton.prototype = { megaClick: function(e) { play('moo.mp3'); } }; </script> </element> <link rel="component" href="x-megabutton.html"> <x-megabutton>Better Buttonz</x-megabutton>
  11. var observer = new MutationObserver(function(mutations, observer) { mutations.forEach(function(record) { for

    (var i = 0, node; node = record.addedNodes[i]; i++) { console.log(node); } }); });
  12. var observer = new MutationObserver(function(mutations, observer) { mutations.forEach(function(record) { for

    (var i = 0, node; node = record.addedNodes[i]; i++) { console.log(node); } }); }); observer.observe(el);
  13. function observeChanges(changes) { console.log('== Callback =='); changes.forEach(function(change) { console.log('Ce qui

    a changé', change.name); console.log('La nature du changement', change.type); console.log('L''ancienne valeur', change.oldValue ); console.log('La nouvelle valeur', change.object[change.name]); }); }
  14. function observeChanges(changes) { console.log('== Callback =='); changes.forEach(function(change) { console.log('Ce qui

    a changé', change.name); console.log('La nature du changement', change.type); console.log('L''ancienne valeur', change.oldValue ); console.log('La nouvelle valeur', change.object[change.name]); }); } var o = {};
  15. function observeChanges(changes) { console.log('== Callback =='); changes.forEach(function(change) { console.log('Ce qui

    a changé', change.name); console.log('La nature du changement', change.type); console.log('L''ancienne valeur', change.oldValue ); console.log('La nouvelle valeur', change.object[change.name]); }); } var o = {}; Object.observe(o, observeChanges);