Câu trả lời:
Các cài đặt trước giai đoạn của Babel tương đương với Quy trình TC39 và các trạng thái khác nhau của mỗi đề xuất thay đổi ngôn ngữ tiềm năng. Chúng bao gồm triển khai và polyfill cho tất cả các thay đổi được đề xuất trong giai đoạn đó.
Bất cứ điều gì hiện tại Stage-0
là Strawman , không phải ES6. Đó là Javascript trong tương lai và hoàn toàn không chắc chắn rằng nó sẽ biến nó thành bất kỳ đặc tả ECMAScript chính thức nào.
Xin đừng chỉ thiết lập đểstage-0
nó sẽ hoạt động mà không hiểu hậu quả mà nó sẽ gây ra.
Babel Preset chỉ chứa các tính năng ES6 là preset-es2015
stage-0
nhưng không có nghĩa là hoàn toàn an toàn trước sự thay đổi hoặc thậm chí là không dùng nữa (xem đề xuất của nhà xây dựng cuộc gọi đã được rút sau Giai đoạn 1). Nhưng điều tương tự có thể được nói về bất kỳ Giai đoạn nào khác ngoài Giai đoạn 4 (tức là Đã hoàn thành).
preset-es2015
bằng babel-preset-node6
những ngày này, nếu chạy Node 6 hoặc tốt hơn.
babel-preset-env
có thể nhắm mục tiêu bất kỳ môi trường!
babel-preset-env
INSTEAD OF babel-preset-es2015
. babel-preset-es2015
gần như đã lỗi thời
Như chủ yếu được xây dựng bởi các câu trả lời khác. Giai đoạn 4 ổn định nhất và Giai đoạn 0, nguy hiểm nhất. Dưới đây là một chút phân tích ở mức cao cho 5 giai đoạn từ các câu trả lời trước và tài liệu hướng dẫn. Tôi đang thêm điều này bởi vì khi tôi nói đến điều này, tôi đã mong đợi một sự phân chia cấp cao hơn về từng giai đoạn:
Sẵn sàng để đưa vào Tiêu chuẩn ECMAScript, đã vượt qua thử nghiệm và sẽ là một phần của phiên bản tiếp theo
Bao gồm một văn bản đặc tả đầy đủ và bao gồm các plugin hầu hết đã được thử nghiệm và cung cấp phản hồi. Giải pháp đã hoàn tất và tất cả các thay đổi khác đều dựa trên kinh nghiệm thực hiện.
Hỗ trợ thêm cho các plugin hoàn thành càng nhiều càng tốt. Các yêu cầu cho những điều này được đáp ứng chủ yếu chỉ với những thay đổi gia tăng trên đường đi. Ngữ nghĩa và api dự kiến sẽ được hoàn thành. Nó rất có thể sẽ trở thành một phần của thông số kỹ thuật.
Mỗi cấp độ được bao gồm trong khi 4 bao gồm 3 bao gồm 2 và cứ thế ... Tôi hy vọng rằng tổng kết này sẽ giúp được ai đó trong tương lai.
Các giai đoạn đại diện cho các giai đoạn như được xác định bởi quy trình TC39 hoạt động các tính năng từ những ý tưởng điên rồ nhưng hữu ích thành các tiêu chuẩn được chấp nhận, chẳng hạn như ES6. Quá trình này mất một thời gian, vì mọi trường hợp góc phải được thảo luận, suy nghĩ, thử nghiệm, đa dạng, thảo luận thêm, v.v. Đó là, đó là một cơ quan tiêu chuẩn. Mục tiêu là nói "ES6" sẽ có nghĩa đầy đủ và hoàn chỉnh, giống như nói "ES5".
Trong thực tế, các yêu cầu dự án của bạn có thể bao gồm từ ở lại cho đến thử và đúng cho đến chơi xung quanh với các tính năng ngôn ngữ rất tiện lợi, nếu mơ hồ. Bạn có thể muốn bắt đầu với các liên kết sau:
Tổng quan về quy trình TC39 : Điều này bao gồm một biểu đồ tiện lợi về các giai đoạn có ý nghĩa gì và cách các tính năng tiến triển từ giai đoạn này sang giai đoạn khác. Dưới đây là tổng quan về TC39.
Các đề xuất hoạt động : Tổng quan nhanh về các đề xuất nhất định trong giai đoạn nào. Nó cũng bao gồm các liên kết đến các đề xuất Hoàn thành, Không hoạt động và Giai đoạn 0. Hôm nay, tháng 4 năm 2017, Trường lớp công khai ở giai đoạn 2, có nghĩa là nó được mô tả chính xác và người đánh giá đã được chỉ định, nhưng không được xem xét đầy đủ.
Gói cài sẵn Babel cho Giai đoạn 3 : Trang trình cắm, với các liên kết đến Git và NPM, cho tất cả các đề xuất của Giai đoạn 3. Về cơ bản, trình cắm thêm này kéo theo bộ sưu tập các gói, theo lý thuyết, hoàn thành các đề xuất hiện tại trong TC39 giai đoạn 3. Trong thực tế, có thể xảy ra lỗi. Ngoài ra, bạn có thể tìm thấy Tương tự tương tự, nó liên kết đến các trang bổ trợ cho Giai đoạn 2 trở xuống. Các trang đó sẽ liên kết đến các gói bao gồm cả đề xuất Giai đoạn 3 và các đề xuất kém ổn định hơn.
Babel Preset 'env' : Cài đặt sẵn Babel này hỗ trợ các đề xuất đã hoàn thành, chọn các gói chính xác cần thiết để hỗ trợ các tính năng này trong một môi trường đã biết. Ví dụ: một node
tệp thực thi cục bộ yêu cầu ít plugin hơn một trình duyệt cũ hơn. Có thể nghĩ đến plugin 'giai đoạn 4' hỗ trợ các tính năng được phê duyệt trong tương lai.
Tóm lại, bạn chỉ cần đối phó với các tính năng phát hành trước này nếu bạn sử dụng chúng. Nếu bạn cần sử dụng chúng, hãy chọn số lượng sân khấu cao nhất có những gì bạn cần. Nếu bạn chỉ muốn cài đặt đồ chơi với các tính năng điên rồ để thảo luận về máy làm mát nước, hãy tiếp tục và lấy giai đoạn 0.
Đây là điểm khởi đầu tốt nhất để hiểu. Cài đặt trước babel là gì
Một đoạn trích từ liên kết:
Giai đoạn 0 - Strawman: chỉ là một ý tưởng, có thể là plugin Babel.
Giai đoạn 1 - Đề xuất: điều này đáng để làm việc.
Giai đoạn 2 - Dự thảo: thông số ban đầu.
Giai đoạn 3 - Ứng viên: hoàn thành thông số kỹ thuật và triển khai trình duyệt ban đầu.
Giai đoạn 4 - Kết thúc: sẽ được thêm vào bản phát hành hàng năm tiếp theo
Ảnh tổng thể :
preset
theo thuật ngữ của babel. Và mỗi cài đặt trước chứa các plugin từ các mức độ rủi ro khác nhau.preset-0
Điều đó có nghĩa là nó có các plugin cho các tính năng rất thử nghiệm và do đó có nguy cơ cao đưa nó ra thông số kỹ thuật cuối cùng. Nó giống như một ý tưởng đã đến với một nhà phát triển rằng Javascript nên có một tính năng cụ thể và anh ta đã thực hiện một số công việc để đưa nó vào quy trình đề xuất TC-39.preset-1
Nó chứa các plugin cho các ý tưởng tính năng được TC-39 chấp nhận và họ thấy nó đáng để làm việc.preset-2
Plugin cho các tính năng trong đó bản nháp ban đầu đã sẵn sàng cho tính năng này. Và nó tiếp tục ..Vì vậy, có thể một tính năng trong Giai đoạn 0 đã đạt đến Giai đoạn 2 trong một thời gian và cuối cùng sẽ được phát hành Javascript tiếp theo một thời gian nữa sau đó.
Do đó với mỗi phiên bản của các cài đặt sẵn Babel này, bạn có thể tìm thấy các bộ plugin khác nhau trong đó. Nó cũng có thể xảy ra rằng một tính năng trong giai đoạn 0 đã trải qua một số thay đổi và nó đã phá vỡ các thay đổi về cách thức hoạt động của nó. Và nó đã đạt được, giả sử giai đoạn 2 với một API hoàn toàn khác. Vì vậy, các nhà phát triển phải đảm bảo rằng khi họ cập nhật các plugin này, họ thực hiện các thay đổi cần thiết cho mã của họ.
Câu hỏi ban đầu là "Sự khác biệt giữa babel-preset-giai đoạn-0, babel-preset-giai đoạn-1, babel-preset-giai đoạn-2 và babel-preset-giai đoạn 3", thật kỳ lạ khi câu trả lời tập trung vào "sự khác biệt giữa TC39 giai đoạn-0, giai đoạn 1 .. thuật ngữ "được bình chọn, trong khi chỉ có một từ duy nhất (mặc dù không chính xác) bị bỏ phiếu. Để trích dẫn từ trang web babel:
Một cài đặt trước Babel là một danh sách các plugin có thể chia sẻ.
Các cài đặt trước Babel Giai đoạn chính thức đã theo dõi quá trình Phân đoạn TC39 cho các đề xuất cú pháp mới trong JavaScript.
Mỗi cài đặt trước (ví dụ: giai đoạn 3, giai đoạn 2, v.v.) bao gồm tất cả các plugin cho giai đoạn cụ thể đó và các plugin bên trên nó. Ví dụ, giai đoạn 2 bao gồm giai đoạn 3, v.v.
Ý tưởng cốt lõi là "những cái ở trên nó". Tôi không trả lời nửa sau vì câu trả lời ở trên rất tốt về phần đó.
Tôi đã nhận nó. Các bạn có thể tham khảo https://babeljs.io/docs/plugins/preset-stage-0/
Nói một cách ngắn gọn, preset-stage-0
chứa tất cả các chức năng preset-stage-1
có và preset-stage-1
chứa tất cả các chức năng preset-stage-2
có và v.v.
Chữ số thấp hơn là mạnh mẽ hơn. Trong dự án của bạn, nếu bạn không lo lắng về vấn đề, chỉ cần đặt stage-0
...
stage-0
, vv thực sự là? Vì bạn nói "Chữ số thấp hơn mạnh hơn.", Tôi tin là không.
stage
với ES6
, @RGraham đã chỉ ra rằng The Babel Preset which contains only ES6 features is preset-es2015
. Cảm ơn!
babel-preset-stage-0
bao gồm tất cả các plugin, từ stage-0
đến stage-3
. Điều đó có nghĩa là tôi muốn tất cả các tính năng được đề xuất, bất kể họ có thể đề xuất hay không.
stage-1
? Có an toàn để sử dụng? Một sốstage-1
tính năng có thể bị phản đối và API-s thay đổi trong tương lai không?