2014-11-13 19 views
9

Vì vậy, tôi mới phát hiện ra rằng Angular 2.0 sắp ra mắt, họ đang sử dụng ECMAScript 6, nhưng biên dịch nó thành 5, v.v., v.v.AngularJS 2.0 viết lại bằng ECMAScript?

Làm thế nào điều đó (sử dụng ECMAScript) ảnh hưởng đến việc sử dụng? Làm thế nào để nó được tương thích với JavaScript Tôi sử dụng để gọi API của nó? Tôi có nghĩa là, có ngôn ngữ khác nhau (ES, JS) được viết với nhau?

Bối rối cách hoạt động của tính năng này. Trợ giúp được đánh giá cao.

EDIT

Xin lỗi @ Joseph nếu câu hỏi của tôi là không đủ rõ ràng, nhưng tôi cũng (chủ yếu) muốn biết làm thế nào ECMAScript 5 chạy trong trình duyệt và đoạn thứ hai ở trên giữ này trong ngữ cảnh.

Người dùng JavaScript sử dụng Angular 2.0 như thế nào? ES hoạt động cùng với mã JS như thế nào?

Từ docs:

Mặc dù góc sẽ được ở ES6, bạn vẫn có thể viết bằng ES5 nếu bạn không muốn nâng cấp. Trình biên dịch tạo ra JS có thể đọc được và có các tương tự nhạy cảm với con người cho các phần mở rộng.

Tôi nghi ngờ rằng ES có thể được điều hành bởi các thông dịch viên JS (?)

Trả lời

14

AngularJS 2.0 được viết lại trong ECMAScript?

Có vẻ như bạn đã nhầm lẫn ES cho ngôn ngữ khác.

ES (ECMAScript) là tiêu chuẩn mà ngôn ngữ JavaScript được dựa trên. Nó định nghĩa các quy tắc và hành vi của JS và các ngôn ngữ khác dựa trên nó. ES5 là phiên bản thứ 5, ES6 là bản sửa đổi sắp tới tại thời điểm viết bài.

họ đang sử dụng ECMAScript 6, nhưng biên dịch nó để 5

Khá nhiều every browser today is ES5 compatible khi not so with ES6. Có những ưu đãi khi sử dụng ES6 như API mới và cú pháp rất tiện lợi - nhưng chúng không có trong ES5. Để có thể sử dụng ES6 ngay bây giờ nhưng vẫn cần có mã ES6 được chuyển đổi sang ES5.

Điều này có nghĩa là Angular được viết bằng cú pháp ES6, nhưng mã là transpiled (được chuyển đổi) trở lại tương đương ES5 để cho phép trình duyệt hiện tại chạy nó.

Dưới đây là ví dụ về mã làm điều tương tự, một được viết bằng ES6 và một trong ES5 được tạo từ một số transpiler. Hãy chú ý đến sự tiện lợi của phiên bản ES6 so với phiên bản ES5.

// ES6 
var seattlers = [for (c of customers) if (c.city == "Seattle") { name: c.name, age: c.age }]; 

// ES5 
var seattlers = customers.filter(function (c) { 
    return c.city == "Seattle"; 
}).map(function (c) { 
    return { 
    name: c.name, 
    age: c.age 
    }; 
}); 

Điều đó ảnh hưởng đến việc sử dụng như thế nào?

Làm thế nào nó sẽ tương thích với JavaScript tôi sử dụng để gọi API của nó?

có ngôn ngữ khác nhau được viết cùng

Họ (góc) đã viết nó trong phiên bản sắp tới, sau đó chuyển đổi nó trở lại với phiên bản hiện tại mà có thể chạy trên các trình duyệt hiện nay. Không cần thêm nỗ lực nào vào phần người tiêu dùng. Động thái này có lẽ là làm cho mã "chuyển tiếp", chuẩn bị mã cho phiên bản tương lai ngày hôm nay.

+0

+1 cảm ơn, nhưng hãy xem chỉnh sửa của tôi – jasonszhao

+2

@jasonszhao Ahh, có vẻ như bạn đã nhầm lẫn ES cho một ngôn ngữ khác. [ES (ECMAScript)] (https://en.wikipedia.org/wiki/ECMAScript) là một tiêu chuẩn, không phải là một ngôn ngữ. JS dựa trên tiêu chuẩn ES. ES5 là phiên bản thứ 5, ES6 là bản sửa đổi sắp tới. Viết trong ES6 có nghĩa là codebase của chúng được chuyển tiếp, được viết trên cú pháp mới. Việc chuyển đổi trở lại ES5 có nghĩa là chúng có thể chạy mã đó trên các trình duyệt hiện tại bằng cách sử dụng ES5 tương đương với mã ES6 mà chúng đã viết. Tất nhiên, đây là tất cả trong JavaScript. – Joseph

+0

Thêm một chỉ cho mã ví dụ đáng yêu. Làm tôi phấn khích vì ES6 –

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