2015-10-12 19 views
7

Tôi đã đề cập trên Twitter rằng tôi đã di chuyển từ es6-shim đến babel. Người khác đã đề cập:Babel có cần es6-shim không?

miếng chêm vẫn cần thiết ngay cả với babel. họ sửa chữa các nội trang bị hỏng, những đầu ra của babel sử dụng.

Vì vậy:

  1. Liệu babel cần es6-shim hoặc tương tự?

  2. Nếu có, tại sao không babel require những thứ này là phụ thuộc?

Trả lời với tham chiếu được ưu tiên hơn 'có/không' không có đối số hỗ trợ!

Trả lời

11

Babel, cốt lõi của nó, thực hiện một điều duy nhất: chuyển đổi cú pháp từ dạng này sang dạng khác.

Một số chuyển đổi cú pháp của Babel giới thiệu các phụ thuộc vào chức năng thư viện ES6. Nó không liên quan đến bản thân với cách tính năng mà đến đó vì:

  • Hệ thống này có thể đã cung cấp cho nó
  • Người dùng có thể chỉ muốn tải phần cụ thể của một thư viện
  • Có rất nhiều polyfills và người dùng có thể có một công cụ cụ thể mà họ muốn sử dụng.

Đây là công việc của nhà phát triển để đảm bảo rằng mã được chuyển đổi đang chạy trong môi trường nơi tất cả các chức năng cần thực sự tồn tại.

  • Babel sẽ hoạt động tốt với es6-shim nếu bạn muốn tiếp tục sử dụng.
  • Babel cũng phơi bày babel/polyfill là cách chết đơn giản để tải một polyfill, tải core-js, một vùng khác như es6-shim. Chỉ cần:

    require('babel/polyfill');

4

Một số biến đổi Babel dựa trên các đối tượng hoặc các phương pháp mà có thể không có sẵn trong môi trường thời gian chạy của bạn và những bạn do đó sẽ muốn polyfill cho những môi trường. Những phụ thuộc đó được ghi lại tại https://babeljs.io/docs/usage/caveats/.

Babel vận chuyển với một polyfill thỏa mãn tất cả các yêu cầu mà bạn có thể chọn tham gia nếu bạn muốn và không cố gắng tự động chèn các polyfills vì những lý do mà @loganfsmyth giải thích.

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