我将Polymer应用程序转换为Polymer 2.我将组件更改为ES6 Class语法(是的,我知道我可以将它们留在v1.7中混合风格,但我希望他们是ES6类)。为什么wecomponentsjs/custom-elements-es5-adapter.js不起作用
然而当我transpile代码回到ES5(与BabelJS)我碰到一个已知的问题就ES5“类”延伸自然元素(https://github.com/babel/babel/issues/4480)。
我试过了babel-plugin-transform-custom-element-classes,但没有奏效。 所以我尝试了webcomponents垫片旨在解决这个问题:https://github.com/webcomponents/webcomponentsjs#custom-elements-es5-adapterjs
但垫片不起作用!我不知道我做错了什么:(
<script src="webcomponentsjs/custom-elements-es5-adapter.js"></script>
<script src="webcomponentsjs/webcomponents-lite.js"></script>
...
<y-example></y-example>
...
<script>
/* transpiled to ES5 */
class YExample extends HTMLElement {}
customElements.define('y-example', YExample);
</script>
这里是我的jsbin: http://jsbin.com/feqoniz/edit?html,js,output
通知我,包括自定义元素-ES5-adapter.js, 也注意到JS的面板使用ES6 /巴贝尔。
如果您删除自定义元素-ES5-adapter.js和改变JS面板正常使用Javascript(不ES6 /巴贝尔),那么一切工作正常。
你可以包括或删除t他的适配器(离开ES6/Babel)和错误基本上是一样的,除了包含适配器时,它来自适配器代码:未能构建'HTMLElement':请使用'new'运算符,这个DOM对象构造函数不能作为函数调用。
我一定在做些傻事?有任何想法吗?