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

Web Components além do Polymer (beyond Polymer)

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Web Components além do Polymer (beyond Polymer)

Avatar for Luiz Augusto

Luiz Augusto

January 31, 2015

More Decks by Luiz Augusto

Other Decks in Programming

Transcript

  1. !==

  2. <body>          <my-­‐element></my-­‐element>        

     <my-­‐element></my-­‐element>          <my-­‐element></my-­‐element>   </body> Custom Elements var  MyElementPrototype  =  Object.create(HTMLElement.prototype);   var  MyElement  =  document.registerElement('my-­‐element',  {          prototype:  MyElementPrototype   });   var  element  =  document.createElement('my-­‐element');   var  anotherElement  =  new  MyElement();   document.body.appendChild(element);   document.body.appendChild(anotherElement);
  3. Custom Elements var  MyElementPrototype  =  Object.create(HTMLElement.prototype);   MyElementPrototype.createdCallback  =  function()

     {};   MyElementPrototype.attachedCallback  =  function()  {};   MyElementPrototype.detachedCallback  =  function()  {};   MyElementPrototype.attributeChangedCallback  =  function(attribute,  oldVal,  newVal)  {};   var  MyElement  =  document.registerElement('my-­‐element',  {          prototype:  MyElementPrototype   });
  4. Shadow DOM var  MyElementPrototype  =  Object.create(HTMLElement.prototype);   MyElementPrototype.createdCallback  =  function()

     {          this.innerHTML  =  '<p>Oi  galera  do  GDG.</p>';   };   var  MyElement  =  document.registerElement('my-­‐element',  {          prototype:  MyElementPrototype   }); <body>          <my-­‐element></my-­‐element>   </body> index.html <body>          <my-­‐element>                  <p>Oi  galera  do  GDG.</p>          </my-­‐element>   </body>
  5. Shadow DOM <body>          <my-­‐element>    

                 #shadow-­‐root                          <p>Oi  galera  do  GDG.</p>          </my-­‐element>   </body> <body>          <my-­‐element></my-­‐element>   </body> index.html var  MyElementPrototype  =  Object.create(HTMLElement.prototype);   MyElementPrototype.createdCallback  =  function()  {          var  shadow  =  this.createShadowRoot();          shadow.innerHTML  =  '<p>Oi  galera  do  GDG.</p>';   };   var  MyElement  =  document.registerElement('my-­‐element',  {          prototype:  MyElementPrototype   });
  6. Templates <template  id="template">          <p>Oi  galera  do

     GDG.</p>   </template> var  MyElementPrototype  =  Object.create(HTMLElement.prototype);   MyElementPrototype.createdCallback  =  function()  {          var  shadow  =  this.createShadowRoot();          var  template  =  document.querySelector('template');          var  clone  =  document.importNode(template.content,  true);          shadow.appendChild(clone);   };   var  MyElement  =  document.registerElement('my-­‐element',  {          prototype:  MyElementPrototype   });