Các tính năng ECMAScript 6 có sẵn trong Node.js 0.12


162

Một bản phát hành ổn định mới của Node.js (0.12) đã xuất hiện gần đây với công cụ JavaScript v8 được nâng cấp của Google, v3.28.73 .

Những tính năng ECMAScript 6 nào hiện đang có trong Node.js mà không sử dụng --harmonycờ?

Tôi đã kiểm tra một số trang web tuyên bố liệt kê các tính năng ES 6 nhưng tất cả chúng đều lỗi thời - nổi bật nhất là bảng này ( Cập nhật: hiện được cập nhật với trạng thái Node.js hiện tại kể từ 0.12 ), vì một số tính năng được liệt kê là yêu cầu --harmonycờ trong khi tôi thấy một số trong số chúng được bật theo mặc định (Bản đồ, Bộ, Biểu tượng, để đặt tên cho một số). Cập nhật : Các bảng cụ thể của nút đã được cung cấp

Ngoài ra, cố gắng google thông tin này hoàn toàn cho công cụ v8 cung cấp thông tin cập nhật quá mức - bản phát hành v8 hiện tại là 4.2. * , Hoàn toàn đi trước những gì Node.js sử dụng.

Tôi hy vọng rằng câu hỏi này (và câu trả lời của nó) sẽ trở thành một bản tóm tắt toàn diện về những tính năng ES 6 hiện có sẵn cho các nhà phát triển Node.js.

Các tính năng ES 6 được bật trong Node.js 0.12 Tôi hiện biết:

  • Bản đồ, Bộ / WeakMaps, WeakSets
  • Biểu tượng
  • Object.observe
  • Hứa
  • Con số
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • môn Toán
    • .clz32
    • .imul
    • .ký tên
    • .log10
    • .log2
    • .log1p
    • .Exm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

9
"Hy vọng của tôi là câu hỏi này (và câu trả lời của nó) sẽ trở thành một bản tóm tắt toàn diện về những tính năng ES 6 hiện có sẵn cho các nhà phát triển Node.js." - Cơ hội là nó sẽ đơn giản trở thành một mớ hỗn độn vô tổ chức ... điều đó cũng lỗi thời như tất cả các tài nguyên khác !! Trừ khi bạn 1) tự trả lời và 2) dành thời gian để sắp xếp các câu trả lời khác vào của bạn. Nếu bạn chuẩn bị thực hiện công việc đó, thì có thể phù hợp hơn để thực hiện nó trong một blog.
Stephen C

2
Hoặc chỉ cần chuyển sang io.js (mà tàu với nhiều cập nhật V8 phiên bản) và giữ một mắt trên ES6 trên trang io.js .
Fabrício Matté 7/2/2015

2
Bảng tương thích ES6 được giám tuyển: kangax.github.io/compat-table/es6
Fabrício Matté

2
@JonathanLonowski thú vị, thật kỳ lạ khi tôi không thể tìm thấy một vấn đề / PR liên quan đến Node 0.12. chỉnh sửa: nộp một vấn đề .
Fabrício Matté 8/2/2015

1
@RobertRossmann - Bất cứ ai cũng có thể có một blog. Tôi không nghi ngờ mục tiêu của bạn. Chỉ là tôi không nghĩ rằng nó sẽ hoạt động ... trừ khi có ai đó (tức là >> bạn <<) nỗ lực >> để làm cho nó hoạt động.
Stephen C

Câu trả lời:


250

Các tính năng không có --harmonycờ:

Tôi nghĩ đó là tất cả những gì chúng ta có mà không có --harmonycờ.

Các tính năng với --harmonycờ:

Tôi nghĩ rằng đó là tất cả. Có lẽ nếu tôi quên điều gì đó - tôi sẽ thêm nó vào danh sách sau.


8
Đây chính xác là loại câu trả lời mà tôi đã hy vọng nhận được - sạch sẽ, và với các liên kết đến tài liệu / ví dụ! Thêm điểm cho các tính năng liệt kê dưới --harmonycờ. :)
Robert Rossmann

2
Các mẫu chuỗi có ra hay không --harmony? Như trong ${varname}cú pháp đánh dấu lại chuỗi?
Sukima

5
@Sukima Node v0.12 không hỗ trợ chuỗi mẫu , cũng như không có --harmonycờ, cũng không có nó. Nhưng iojs hỗ trợ họ mà không cần bất kỳ cờ.
alexpods

1
Liệu nodejs có tài liệu này ở bất cứ đâu? Nó rất hữu ích.
Justin Hamade

1
@JonRed Có thể việc chạy của bạn thất bại bởi một lý do khác, không phải vì liên tục. Tôi vừa thử nó và chạy của tôi hoạt động khá tốt.
alexpods

4

ES6 có tính năng nhỏ giọt xuống Node theo từng giai đoạn. Node sử dụng động cơ V8 của Google làm công cụ JavaScript. Một tính năng được hỗ trợ trong Node có nghĩa là trước tiên nó phải được triển khai trong V8 và sau đó nhóm Node phải kết hợp nó trong Node.js.

Nhóm tại Google phát hành phiên bản V8 mới khoảng sáu tuần một lần, và sau đó, nhóm Node sẽ đưa nó vào sử dụng.

Danh sách thủ công các tính năng ngôn ngữ là tốt đẹp nhưng có thể trở nên lỗi thời một cách nhanh chóng. Nút 0.12 không còn thay đổi nữa, nhưng danh sách được quản lý theo cách thủ công thường bị lỗi thời ngay khi một phiên bản mới của Node được tung ra.

Dưới đây là hai cách khác nhau để kiểm tra các tính năng mà phiên bản Node hỗ trợ, mà không cần dựa vào danh sách tĩnh. Để đọc thêm và ví dụ chi tiết hơn về việc sử dụng các ví dụ này, bạn có thể kiểm tra "Cách kiểm tra xem Node.js có hỗ trợ tính năng ngôn ngữ ES 6 không"

# 1 Dễ dàng - bảng tương thích

Một danh sách được tạo động dựa trên các bài kiểm tra nhỏ để xác nhận sự hiện diện của tính năng ngôn ngữ được cập nhật tốt hơn. Một danh sách phổ biến như vậy là kangax.github.io/compat-table/es6/. Chúng tôi chỉ quan tâm đến các tính năng của Node, vì vậy bạn có thể sử dụng

http://node.green

sử dụng cùng một dữ liệu với trang web kangax.

# 2 Phiên bản V8 cứng - quay lại

Node sử dụng động cơ V8, do đó, việc xác định phiên bản V8 nào được bao gồm trong Node cho chúng ta biết các tính năng ngôn ngữ ES6 nào được hỗ trợ. Bạn có thể tìm ra phiên bản V8 nào được gói trong Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Sau đó, sử dụng tài nguyên dự án V8 của Google, bạn có thể tìm thấy các tính năng được triển khai trong mỗi phiên bản. Dự án V8 giữ một bộ theo dõi vấn đề nơi bạn có thể tìm thấy ES6 + ngoài các tính năng được đánh dấu bằng nhãn hài hòa .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.