Cảm ơn câu hỏi của bạn! Từ chối trách nhiệm đầy đủ, tôi làm việc trong nhóm Dart.
Có lẽ lợi thế tốt nhất mà Dart có được ngày nay là nó quen thuộc với C #, Java, C ++ và hầu hết các nhà phát triển JavaScript. Nhiều nhà phát triển có một loạt các kỳ vọng xung quanh ngôn ngữ của họ (OO dựa trên lớp, phạm vi từ vựng, cú pháp quen thuộc) và các công cụ của họ (hoàn thành mã, tái cấu trúc, điều hướng mã, gỡ lỗi) mà Dart nhắm đến và vượt quá.
Các loại tĩnh tùy chọn. Khi tôi tạo mẫu hoặc chỉ đơn giản là viết các tập lệnh nhỏ, tôi không sử dụng rất nhiều kiểu tĩnh. Tôi chỉ không cần họ, và tôi không muốn bị sa lầy với buổi lễ. Tuy nhiên, một số trong những kịch bản phát triển thành các chương trình lớn hơn. Theo quy mô kịch bản, tôi có xu hướng muốn các lớp và chú thích kiểu tĩnh.
Vô tội cho đến khi được chứng minh có tội. Dart cố gắng hết sức để giảm thiểu các tình huống dẫn đến lỗi thời gian biên dịch. Nhiều điều kiện trong Dart là cảnh báo, điều đó không ngăn chương trình của bạn chạy. Tại sao? Để phù hợp với thời trang phát triển web, bắt buộc phải cho phép các nhà phát triển thử một chút mã, nhấn tải lại và xem điều gì sẽ xảy ra. Trước tiên, nhà phát triển không cần phải chứng minh toàn bộ chương trình là chính xác trước khi chỉ kiểm tra một góc của mã.
Phạm vi từ điển. Điều này thật tuyệt vời, nếu bạn không quen với nó. Nói một cách đơn giản, khả năng hiển thị của các biến và thậm chí điều này , được xác định bởi cấu trúc chương trình. Điều này giúp loại bỏ một lớp các câu đố trong lập trình web truyền thống. Không cần phải liên kết lại các chức năng để giữ điều này với những gì bạn nghĩ hoặc mong đợi.
Các lớp học thực sự nướng vào ngôn ngữ. Rõ ràng hầu hết các nhà phát triển muốn làm việc trong các lớp, vì hầu hết các khung phát triển web cung cấp một giải pháp. Tuy nhiên, "lớp" từ khung A không tương thích với khung B, trong phát triển web truyền thống. Phi tiêu sử dụng các lớp học một cách tự nhiên.
Chức năng cấp cao nhất. Một điều đau đớn của Java là mọi thứ phải được đưa vào một lớp. Đây là một chút giả tạo, đặc biệt là khi bạn muốn xác định một vài chức năng tiện ích. Trong Dart, bạn có thể định nghĩa các hàm ở cấp cao nhất, bên ngoài bất kỳ lớp nào. Điều này làm cho thành phần thư viện cảm thấy tự nhiên hơn.
Các lớp học có giao diện ngầm. Việc loại bỏ các giao diện rõ ràng đơn giản hóa ngôn ngữ. Không cần phải xác định IDuck ở mọi nơi, tất cả những gì bạn cần bây giờ là một lớp Vịt. Bởi vì mỗi lớp có một giao diện ngầm, bạn có thể tạo mộtMockDuck implements Duck
Nhà xây dựng được đặt tên. Bạn có thể cung cấp cho các nhà xây dựng tên, mà thực sự giúp với khả năng đọc. Ví dụ:var duck = new Duck.fromJson(someJsonString)
Xây dựng nhà máy. Mô hình nhà máy là khá phổ biến, và thật tuyệt khi thấy điều này được đưa vào ngôn ngữ. Một nhà xây dựng nhà máy có thể trả về một singleton, một đối tượng từ bộ đệm hoặc một đối tượng của kiểu con.
Cô lập. Đã qua rồi những ngày chia sẻ trạng thái có thể thay đổi giữa các luồng (một kỹ thuật dễ bị lỗi). Một cô lập Dart là một đống bộ nhớ bị cô lập, có thể chạy trong một tiến trình hoặc luồng riêng biệt. Cô lập giao tiếp bằng cách gửi tin nhắn qua cổng. Cô lập hoạt động trong máy ảo và có thể biên dịch cho nhân viên web trong ứng dụng HTML5.
Dart biên dịch thành JavaScript. Điều này cực kỳ quan trọng, vì JavaScript là ngôn ngữ chung của web. Các ứng dụng phi tiêu nên chạy trên web hiện đại.
Dụng cụ mạnh mẽ. Dự án Dart cũng gửi một biên tập viên. Bạn sẽ tìm thấy hoàn thành mã, tái cấu trúc, sửa lỗi nhanh, điều hướng mã, gỡ lỗi và hơn thế nữa. Ngoài ra, IntelliJ có một plugin Dart.
Thư viện. Bạn có thể sắp xếp mã Dart vào các thư viện, để dễ dàng đặt tên và tái sử dụng. Mã của bạn có thể nhập thư viện và thư viện có thể xuất lại.
Nội suy chuỗi. Đây chỉ là một tính năng hay, giúp bạn dễ dàng soạn một chuỗi:var msg = "Hello $friend!";
noSuchMethod Dart là một ngôn ngữ động và bạn có thể xử lý các cuộc gọi phương thức tùy ý với noSuchMethod()
.
Thế hệ. Có thể nói "đây là một danh sách táo" cung cấp cho các công cụ của bạn nhiều thông tin hơn để giúp bạn và sớm phát hiện ra các lỗi tiềm ẩn. Tuy nhiên, may mắn thay, thuốc generic của Dart đơn giản hơn những gì bạn có thể đã từng sử dụng.
Vận hành quá tải. Các lớp phi tiêu có thể định nghĩa hành vi cho các toán tử như +
hoặc -
. Ví dụ, bạn có thể viết mã như thế nào new Point(1,1) + new Point(2,2)
.
Như đã nói, có rất nhiều thư viện JavaScript ngoài kia.
Cá nhân, tôi tin rằng có nhiều chỗ trên web cho nhiều ngôn ngữ. Nếu ứng dụng tuyệt vời và chạy trên phần lớn các trình duyệt hiện đại, tôi không quan tâm đến việc nó được viết bằng ngôn ngữ nào. Miễn là bạn, nhà phát triển, vui vẻ, làm việc hiệu quả và khởi chạy trên web, đó là có chuyện gì vậy! :)