Web Components. Jean-Marc Lecarpentier GREYC - Université de Caen

Documents pareils
Un jour, une question Réponse à une problématique issue de la liste GTA *

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Déploiement d application Silverlight

Document Object Model (DOM)

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

SYSTÈMES D INFORMATIONS

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Devenez un véritable développeur web en 3 mois!

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

Présentation du Framework BootstrapTwitter

Audit SEO. I / Les Tranquilles d Oléron

Utiliser un CMS: Wordpress

INTRODUCTION AU CMS MODX

Immersive and Collaborative Data Visualization Using Virtual Reality Platforms

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

Mozilla Firefox 3.5. Google Chrome 3.0 LES NAVIGATEURS WEB. (pour Windows) Opéra 10. Internet Explorer 8. Safari 4.0

Comment créer son propre monitoring. (Version simple PHP)

SII Stage d informatique pour l ingénieur

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Bureautique Initiation Excel-Powerpoint

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

les techniques d'extraction, les formulaires et intégration dans un site WEB

Performance Front-End

EXTENSION WORDPRESS. Contact Form 7. Proposé par :

Programme ASI Développeur

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Créer une base de données vidéo sans programmation (avec Drupal)

Ajax, RIA et HTML Prise en charge d Ajax

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Spétechs Mobile. Octobre 2013

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

Drupal Développeur. Theming et développement pour Drupal. Une formation Formateur : Fabien Crépin. Drupal Développeur.

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

TP JAVASCRIPT OMI4 TP5 SRC

Gestion d identités PSL Exploitation IdP Authentic

Un serveur web léger et ouvert

Optimiser les s marketing Les points essentiels

Tutoriel n 3. Comment préparer votre support de présentation (vidéo)? Plugin «rich media» pour Moodle 2

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

DOM - Document Object Model

Alfstore workflow framework Spécification technique

HTML5 et CSS3 pour des sites Responsive Web Design

Manuel : Comment faire sa newsletter

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Projet en nouvelles technologies de l information et de la communication

Les outils marketing. Page 1

Avanquest Software présente la nouvelle gamme WebEasy 8

Notes pour l utilisation d Expression Web

3 Octobre Les Communautés MS

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Pack Fifty+ Normes Techniques 2013

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Newsletters et marketing

SPECIFICITES TECHNIQUES DES FORMATS PUBLICITAIRES

Les Bases. Messaoudi Khaled, Boukelal Hanane (Etudiants Informatique ) 2015.

Responsive Web Design. La Rochelle, Avril 2014

Cours CCNA 1. Exercices

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Pratique et administration des systèmes

Les outils de création de sites web

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Nuxeo 5.4 : les nouveautés

Spétechs Mobile. D e r n i è r e m i s e à j o u r : a o û t 2014

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

K-Portal et K-Sup 5.1 des nouveautés. Détails

Google Tag Manager. «Vous ne verrez plus l'analytics de la même manière» par Ronan CHARDONNEAU

TUTORIEL SIMPLIFIE de QuizFaber Un éditeur de Quiz et autres exercices simple, complet, original et en freeware!

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Audit de site web. Accessibilité

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

Table des matières. Première partie Découvrir, installer et apprivoiser WordPress

Prise en main de Moodle

Intégration xhtml/css avec E-Majine. 6 juillet 2008 (mise à jour février 2009)

4. SERVICES WEB REST 46

Tutoriel : Feuille de style externe

Formation Découverte du Web

creer votre site internet en html/css

HTML. Google Maps. Approfondir. 3 :HIKONB=^UZ^Z]:?k@l@g@h@a"; Codez une fois, déployez sur Android, ios, Kindle... Smartphones. Matériel.

Bonnes pratiques de développement JavaScript

Sommaire. Préface 1 : Pourquoi choisir Magento? Chapitre 1 : Magento, quésaco? Chapitre 2 : Quoi sous le capot?

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

ECLIPSE ET PDT (Php development tools)

Formation Website Watcher

MANUEL D INSTALLATION du module Chronopost pour. version 1.0.5

Transcription:

Web Components Jean-Marc Lecarpentier GREYC - Université de Caen

Web Components Ensemble de 4 spécifications Custom Elements Shadow DOM Templates HTML imports

Custom Elements Définir des éléments personnalisés Encapsuler dans une seule balise : un ensemble d éléments HTML leurs interactions Javascript leur mise en forme CSS

Shadow DOM Définir des mécanismes pour éviter les collisions en ayant plusieurs DOM dans une page Encapsulation des custom elements Frontière avec le DOM du document CSS et requêtes DOM sont séparées

Templates Permettre d avoir des squelettes HTML Templates remplis avec Javascript Utile pour la structure de certains custom elements

HTML imports Avoir un moyen d importer les custom elements Balise <link> de type import Gestion des dépendances et de l ordre d import

Custom Elements Créer des éléments HTML/DOM Pouvant dériver d autres éléments Ayant leur propre API Encapsulés dans un package Élément doit être déclaré : document.registerelement('mon-element', { options }); options est un objet décrivant le prototype de l élément Balise doit contenir un tiret et être en minuscules

Dérivation Possibilité de dériver d un élément HTML Spécifier le type et la dérivation lors de la déclaration : var monbouton = document.registerelement('mon-bouton', { prototype: Object.create(HTMLButtonElement.prototype), extends: 'button' }); <button is="mon-bouton" disabled onclick="alert('cliqué')">un bouton mon-bouton</button> Possibilité de dériver d un custom element

Propriétés et méthodes Définir le prototype de l élément en conséquence var monproto = Object.create(HTMLElement.prototype); monproto.mamethode = function() { alert('mon-proto a activé mamethode()'); } // ajouter une propriété non modifiable Object.defineProperty(monProto, 'mapropriete', { value: 'la valeur de mapropriete'}); document.registerelement('mon-proto', monproto);

Lifecycle callbacks createdcallback : une instance est créée attachedcallback : une instance est insérée dans le document detachedcallback : une instance est supprimée du document attributechangedcallback(attribut, oldval, newval) : un attribut a été ajouté, supprimé ou modifié

Ajouter du contenu Dynamiquement avec createdcallback Problématique : les éléments constituants le custom element doivent être indépendants du reste de la page Shadow DOM : mécanismes d encapsulation

Shadow DOM Encapsuler des éléments et leur contenu Éviter d être pollué par la CSS et les interactions du document Document tree Tout élément peut être Shadow host Shadow host contient shadow root Séparation complète entre host et root pas de relation parent/child DOM pas de sélection CSS Exemple : widget avec ses interactions et son style

Shadow tree Encapsule son contenu N affiche que ce qu il veut Créer un Shadow tree : var host = document.queryselector('.mon-widget'); var root = host.createshadowroot(); root.textcontent = 'Je suis le contenu du shadow tree ; Console Chrome :

Templates et Shadow DOM Prendre le contenu du Shadow host Pour le mettre dans le Shadow tree Mis en forme selon un template

HTML template Élément <template> Inerte et absent du DOM tant que non activé images, videos, etc chargées lors de l activation Activation en Javascript. Propriété content pour accéder au contenu du template <template id="template"> <h1>un exemple de template</h1> </template> var template = document.getelementbyid( template'); document.body.appendchild(document.importnode(template.content, true));

Exemple Javascript : var host = document.queryselector('.mon-widget'); var root = host.createshadowroot(); var template = document.getelementbyid('template'); root.appendchild(document.importnode(template.content, true)); HTML : <div class="mon-widget"> <h1>mon Widget n 1</h1> <p>du contenu de widget</p> </div> <template id="template"> <style> h1 { color: #aaaaaa; } </style> <h1>le titre de mon widget dans le shadow tree</h1> <content select="h1"></content> </template>

Shadow tree et CSS CSS Scoping module Pseudo classes :host et :host-context Pseudo éléments ::shadow et ::content Sélecteur /deep/ Tutoriel : http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/ Draft W3C : https://drafts.csswg.org/css-scoping/

Shadow tree et évènements Évènements traversent ou non la frontière Ceux qui traversent sont modifiés pour conserver l encapsulation Évènement réassigné pour sembler provenir du shadow host Javascript event.path pour voir le chemin

HTML imports Charger des ressources sans <iframe>, Ajax, etc <link rel="import" href= /chemin/du/fichier.html > Utiliser CORS si import d un autre domaine Évènements load et error Document importé disponible via son DOM

Document importé Notion de import document <link> CSS du import non utilisées dans document principal, sauf CSS dans élément <style> Propriété import de l élément link : var importdom = document.queryselector( link[rel= import"]').import; Javascript de l import exécuté dans le contexte window Accès au document principal par l objet document

Imports et Custom Elements Importer un document définissant ses éléments L import exécute les scripts document.registerelement est exécuté Éléments ainsi créés utilisables dans le document

Imports multiples Import peut importer ses propres ressources Gestion des dépendances et de l ordre des imports Ressources importées une seule fois même si incluses dans divers imports Scripts exécutés une seule fois fonctionne même si un script est importé n fois

Imports et affichage <link rel= import > bloque l affichage de la page De même que <link rel= stylesheet > Éviter l effet FOUC Être certain d avoir les custom elements déclarés Considérer les performances http://www.html5rocks.com/en/tutorials/webcomponents/imports/#depssubimports

Web Components Templates Custom Elements Shadow DOM HTML imports Ensemble intéressant Utilisable avec polyfill https://github.com/webcomponents/webcomponentsjs