我將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對象構造函數不能作爲函數調用。
我一定在做些傻事?有任何想法嗎?