2017-01-01 18 views
6

Tôi là một thành phần web đơn giản theo sau web components v1 class syntax mới nhất, nó hoạt động tốt trong Chrome và Firefox/Edge (với một polyfill) nhưng tôi muốn nó chạy trong IE11 vì vậy tôi cần transpile lớp. Tuy nhiên chạy nó thông qua babel tạo mã không còn hoạt động trong bất kỳ trình duyệt nào.Transpiling thành phần web dựa trên lớp với babel

Có cách nào để tạo các thành phần web tương thích ngược với cú pháp lớp hoặc có cách nào ưu tiên để viết các thành phần web để có khả năng tương thích tối đa không?

đang

Ví dụ -

class TestElement extends HTMLElement { 
    connectedCallback(){ 
    this.innerHTML = "<div>Testing</div>" 
    } 
} 

customElements.define('test-element', TestElement) 

Thông báo lỗi khi sử dụng mã transpiled là -

Uncaught TypeError: Failed to construct 'HTMLElement': Please use the 'new' operator, this DOM object constructor cannot be called as a function.

+0

Đây có phải là bản sao của http://stackoverflow.com/questions/35003413/babeljs-doesnt-transpile-extended-classes-properly, đó là bản sao của http://stackoverflow.com/questions/33832646/extending -built-in-natives-in-es6-with-babel - nếu có, thì lần sau hãy thử tìm kiếm transpile OR babel extends – mplungjan

+0

Điều đó nghe giống như vấn đề cơ bản, tôi quan tâm đến cách mọi người làm việc xung quanh vấn đề này liên quan đến thành phần web - hoặc có thể cả hai không hoạt động cùng nhau? – Daaavvy

+0

Giải quyết sự cố? http://stackoverflow.com/a/39376819/295783 – mplungjan

Trả lời

4

Để biên dịch các lớp Custom Element với Babel, bạn có thể sử dụng số này plugin từ Github.

Nó sẽ sử dụng Reflect.construct() thay vì new, không được phép với các đối tượng HTMLElement.

4

Một giải pháp là sử dụng các bản địa-shim sẵn với polyfill này https://github.com/webcomponents/custom-elements

Nó không hoàn hảo mặc dù, muốn tìm một giải pháp sạch hơn.

+0

Cảm ơn, có vẻ như đây thực sự là một bản sao của http://stackoverflow.com/questions/39477678/why-does-v1-web-component-customelements-define-throw- typeerror – Daaavvy

+0

hoạt động hoàn hảo - sau khi gặp nhiều rắc rối với các giải pháp khác. btw họ nói "Chúng tôi cũng đang làm việc trên một số cải tiến trong tương lai để tiếp cận này sẽ cải thiện việc thực hiện và tự động phát hiện nếu nó cần thiết." thú vị firefox không cần shim. – sasha

Các vấn đề liên quan