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

Web Components, le futur atout du développeur

Web Components, le futur atout du développeur

sylzys

May 22, 2014
Tweet

More Decks by sylzys

Other Decks in Technology

Transcript

  1. ! • Aller sur la doc (ex: Boostrap) • Copier-Coller

    une snippet • Utiliser le widget ! • Créer son élément • Utiliser son élément • Le partager ! Mais çà, c’était avant…
  2. Les Web Components, c’est quoi ? Web Components enable Web

    application authors to define w idgets w ith a level of visual richness and interactivity not possible w ith CSS alone, and ease of composition and reuse not possible w ith script libraries today W3C
  3. Les Web Components, c’est quoi ? 1er draft W3C le

    22 mai 2012 ! 4 composants indépendants mais utilisables ensemble
  4. TEMPLATES The template element is used to declare fragments of

    HTML that can be cloned and inserted in the document by script. WhatWG
  5. TEMPLATES Tant que la template n’est pas activée : !

    • Son contenu est parsé mais inerte (markup caché dans le DOM, pas de rendering) • Scripts non exécutés, images non loadées, audio non lu… • Le contenu « n’appartient pas » au document (querySelector() renvoie null) ! La template peut être insérée n’importe où dans <head>, <body>, <frameset>. On peut aussi l’utiliser comme « enfant » d’un <table> ou d’un <select> !
  6. TEMPLATES Activer la template Templates imbriquées Activer la template «

    de 1er niveau » n’active pas les sous-templates Les templates enfants doivent être activées manuellement
  7. Custom elements let authors define their own elements, including new

    presentation and API, that can be used in HTML documents CUSTOM ELEMENTS W3C • Créer de nouveaux éléments DOM/HTML • Etendre des éléments existants • « Packager » des fonctionnalités custom au sein d’un tag • Etendre l’API des éléments DOM existants • Interagir grâce aux Lifecycle Callbacks
  8. CUSTOM ELEMENTS L’élément créé doit ! • Avoir un nom

    unique, contenant un « - » • Etendre un élément existant ! Les browsers « legacy » utiliseront l’élément étendu
  9. CUSTOM ELEMENTS 8 I see a x-special-button I see a

    x-special-button Wait, WHAT ? Isn’t it just a button ??
  10. CUSTOM ELEMENTS Lifecycle Callbacks CreatedCallback() : l’élément est créé ReadyCallback()

    : l’élément est créé ET enregistré InsertedCallback() : l’élément a été inséré dans le document RemovedCallback() : l’élément a été supprimé du document
  11. CUSTOM ELEMENTS Liens utiles • http://w3c.github.io/webcomponents/spec/custom/ ! • h tt

    p : //www. h t m l 5 ro c k s .co m /e n /t u tor i a l s / webcomponents/customelements/ ! • http://customelements.io/ ! • http://www.polymer-project.org/platform/custom- elements.html ! • http://bosonic.github.io/
  12. SHADOW DOM Eric Bidelman Shadow DOM gives us markup encapsulation,

    style boundaries, and exposes (the web developers) the same mechanics browsers vendors have been using to implement their internal UI.
  13. SHADOW DOM Styles • Les styles déclarés dans le Shadow

    DOM ont ce scope par défaut ! • Les règles CSS déclarés dans la page ne s’appliquent pas par défaut au Shadow DOM ! • On peut changer ce comportement avec shadow.applyAuthorStyles = true;
  14. SHADOW DOM Liens utiles • http://www.w3.org/TR/shadow-dom/ ! • http://html5-demos.appspot.com/shadowdom- visualizer

    ! • http://subs tantia l.com/blog/2014/02/05/ accessibility-and-the-shadow-dom/
  15. IMPORTS HTML • <iframe> ! • Ajax ! • <script

    type="text/html"> W3C HTML Imports are HTML documents that are linked as external resources from another HTML document.
  16. IMPORTS HTML index.html polymer-ui-tabs.html Un import peut lui-même faire des

    imports Un nouveau <pol ym er-secl ec tor> serai t directement utilisable par l’utilisateur via index.html
  17. IMPORTS HTML Liens utiles • h tt p : //w

    w w.w 3 . o r g / T R / 2 0 1 4 / W D - h t m l - imports-20140311/ ! • http://robdodson.me/blog/2013/08/20/exploring- html-imports/
  18. Support natif http://jonrimmer.github.io/are-we-componentized-yet • chrome:flags : « Enable Experimental WebKit

    features » • chrome:flags : « Enable experimental JavaScript » • DevTools : « Show Shadow DOM» Chrome Canary
  19. WEB COMPONENTS Bonnes pratiques • Namespace • Documentation • Test

    • Pas de renvoi d’erreur • Inclusion des dépendances • … http://webcomponents.org/articles/web- components-best-practices/
  20. WEB COMPONENTS Et l’accessibilité dans tout çà ? • http://www.pol

    ymer-project.org/articl es/ accessible-web-components.html ! • http://www.brucelawson.co.uk/2014/notes-on- accessibility-of-web-components/ ! • http://subs tantia l.com/blog/2014/02/05/ accessibility-and-the-shadow-dom/
  21. WEB COMPONENTS Liens utiles • http://webcomponents.org/ ! • https://github.com/webcomponents !

    • https://developer.mozilla.org/en-US/Apps/ Tools_and_frameworks/Web_components ! • https://www.youtube.com/watch?v=e29D1daRYrQ ! • h tt p : //c o d i n g . s m a s h i n g m a g a z i n e . c o m / 2014/03/04/introduction-to-custom-elements/