Polymer 2.x:ES6基于类的语法,元素定义

时间:2016-10-20 05:13:37

标签: polymer es6-class es6-modules polymer-2.x

In the preview documentation here,有以下代码:

class MyElement extends Polymer.Element {
  static get is() { return 'my-element' }

我的问题是:第一行中的MyElement位是否必须与第二行中的my-element位匹配?第一位是否以任何方式受到第二位的约束?反之亦然?

1 个答案:

答案 0 :(得分:4)

不,类名与您从is getter返回的元素名称无关。例如,该类可以命名为XFoo,元素名称为my-app

class XFoo extends Polymer.Element {
  static get is() { return 'my-app'; }
}

customElements.define(XFoo.is, XFoo);

该课程也可以是匿名的:

customElements.define('my-app', class extends Polymer.Element {
  static get is() { return 'my-app'; }
});

customElement.define()Web Components Custom Elements spec中定义,这可能就是为什么它没有在Polymer 2.0-preview Wiki中解释的原因。规范没有对类名施加任何规定。根据规范和MDN中的示例,类名通常至少类似于元素名称(可能具有可维护性)。

  • MDN实例: save-button vs SaveBtn

    var MySaveBtn = document.registerElement("save-button", SaveBtn);
    
  • 自定义元素规范实例: auto-embiggened vs AutoEmbiggenedImage

    customElements.define("auto-embiggened", AutoEmbiggenedImage, { extends: "img" });