Webcomponents: [question] Pourquoi sommes-nous incapables de construire des composants Web à partir d'éléments SVG ?

Créé le 22 juil. 2017  ·  4Commentaires  ·  Source: WICG/webcomponents

Supposons que je crée un simple jeu SVG. Je souhaite créer des éléments personnalisés avec des racines fantômes constituées de primitives SVG ( <rect> , <circle> , etc.). Le résultat serait comme ceci :

<svg>
  <redwood-tree position="10 20"></redwood-tree>
  <player-tank position="30 50"></player-tank>
  <enemy-tank position="50 100"></enemy-tank>
  <!-- ... etc ... -->
</svg>

où chacun de ces éléments pourrait être défini comme

customElements.define('player-tank', class extends SVGRectElement {
  constructor() {
    this.root = this.attachShadow({mode:'closed'})
    this.root.innerHTML = `<rect width="10" height="10"></rect>`
    // ... some more code to map `position` attribute to `x/y` attributes ...
  }
})

Démo (rien ne se passe): https://jsfiddle.net/pem90k9a (mais si vous essayez de placer l'élément player-tank en dehors d'un arbre SVG, alors il dira Uncaught TypeError: Illegal constructor toute façon puisque nous ' J'ai prolongé SVGRectElement .

Pourquoi SVG n'est-il pas compatible avec les composants ?

Commentaire le plus utile

Il suffit de regarder l'arbre composé. Le rendu devrait être découplé de l'analyse syntaxique, ce serait approprié. Je ne sais pas à quel point c'est complexe, mais cela semble valable.

Tous les 4 commentaires

Une solution consiste à utiliser <div> s, et chaque élément (tank-joueur, tank ennemi, etc.) peut être un arbre <svg> séparé, mais de toute façon, il serait toujours intuitif qu'il se contente de travailler (plutôt que de n'aboutir à rien).

Nous aurions à modifier encore plus l'analyseur. Nous avons donc choisi de ne pas le faire pour réduire la complexité.

Il suffit de regarder l'arbre composé. Le rendu devrait être découplé de l'analyse syntaxique, ce serait approprié. Je ne sais pas à quel point c'est complexe, mais cela semble valable.

Nous aurions à modifier encore plus l'analyseur. Nous avons donc choisi de ne pas le faire pour réduire la complexité.

Excellente philosophie de conception et de développement ! Poussez la complexité sur les développeurs et les utilisateurs finaux !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

npm1 picture npm1  ·  8Commentaires

justinfagnani picture justinfagnani  ·  8Commentaires

dandclark picture dandclark  ·  5Commentaires

esarbe picture esarbe  ·  8Commentaires

hayatoito picture hayatoito  ·  3Commentaires