[Dart&Flutter][Bài1]Giới thiệu về Dart

Dart là một ngôn ngữ lập trình OOP, có bộ thu gom rác bộ nhớ, được tối ưu hóa cho phía client để tạo ra các ứng dụng nhanh chạy trên mọi nền tảng. Nếu bạn đã quen với một ngôn ngữ lập trình hướng đối tượng như Java hay C#, bạn có thể tìm thấy nhiều điểm tương đồng với Dart. Chúng ta sẽ cùng nhau tìm hiểu xem, Dart sẽ giúp ta giải quyết các vấn đềnhư thế nào và sự rộng lớn API của nó.

  1. Nền tảng được hỗ trợ:

 Dart là một ngôn ngữ linh hoạt nhờ vào môi trường nó hoạt động. Khi một mã nguồn được viết (và test), nó có thể được triển khai theo nhiều cách khác nhau:

  • Độc lập: Giống như một chương trình Java không thể chạy mà không có máy ảo Java (JVM), một chương trình Dart độc lập cũng không thể được thực thi mà không có Máy ảo Dart (DVM). Để thực thi Dart trong môi trường dòng lệnh (command-line), cần tải và cài đặt DVM. Ngoài trình biên tập và các thư viện, SDK còn cung cấp một loạt các công cụ khác:

   + Pub - trình quản lí package

   + dart2js - biên tập từ Dart sang JavaScript

   + dartdoc - trình tạo tài liệu Dart

   + dartfmt - trình định dạng mã tuân theo các nguyên tắc.


 Nói cách khác, với cách độc lập, bạn đang tạo một chương trình Dart mà chỉ có thể chạy nếu DVM được cài đặt. Để phát triển các ứng dụng Flutter cho bất kỳ nền tảng nào (di động, web và desktop), thay vì cài đặt Dart SDK "thuần túy", bạn cần cài đặt Flutter (về cơ bản là SDK Dart được kết hợp với các công cụ Flutter)

  • AOT compiled. The Ahead Of Time (AOT) compilation là việc dịch một ngôn ngữ bậc cao, như Dart, sang mã máy gốc. Về cơ bản, từ mã nguồn Dart, bạn có thể có được một tệp nhị phân cái mà có thể thực thi nguyên gốc trên hệ điều hành xác định. AOT thực sự khiến Flutter nhanh và gọn.

 Với AOT, bạn không cần phải cài DVM bởi vì cuối cùng, bạn có một tệp nhị phân (một .apk hoặc aab với android, ipa với ios, .exe với Windows) có thể được thực thi.

 Nhờ có Flutter SDK, có thể biên dịch AOT mã Dart thành một tệp nhị phân gốc cho điện thoại, web và desktop.

 Việc biên dịch AOT rất mạnh mẽ vì nó mang Dart đến với máy tính để bàn di động. Đến cuối cùng bạn sẽ có một tệp nhị phân gốc duy nhất không yêu cầu cài đặt DVM trên client để chạy ứng dụng.

  • Web: Nhờ công cụ dart2js, dự án Dart của bạn có thể được "chuyển đổi" thành mã JavaScript nhanh và nhỏ gọn. Do đó, Flutter có thể được chạy, ví dụ, trên Firefox hoặc Chrome và giao diện người dùng sẽ giống hệt với các nền tảng khác.

 AngularDart  là một famework ứng dụng web được Google sử dụng để xây dựng một số các trang web, chẳng hạn như "AdSense" và "AdWords". Tất nhiên nó được cung cấp bởi Dart!

 Bức ảnh này tóm tắt rõ cách mã Dart có thể được dùng trong việc phát triển và triển khai (deploy). Chúng ta vừa mới đề cập đến khía cạnh "Triển khai" trong phần trên, vì vậy hãy phân tích mặt "Phát triển" :

  • Destop/mobile: Kĩ thuật Just In Time (JIT) có thể được xem như là một "kỹ thuật dịch thời gian thực" vì quá trình biên dịch diễn ra trong khi chương trình đang thực thi. Nó là một loại "biên dịch động" xảy ra trong khi chương trình đang được sử dụng.

  Biên dịch JIT, kết hợp với DVM (JIT + VM trong hình), cho phép gửi
  mã động mà không cần xem xét kiến ​​trúc máy của người dùng. Bằng cách
  này, bạn có thể chạy và gỡ lỗi mã ở mọi nơi một cách trơn tru mà không cần   phải làm rối tung kiến trúc bên dưới.

  • Trình biên dịch phát triển Dart, viết tắt là dartdevc, cho phép bạn chạy và
    gỡ lỗi các ứng dụng web Dart trên Google Chrome. Lưu ý rằng dartdevc chỉ dành cho phát triển: để triển khai (deploy), bạn nên sử dụng dart2js. Sử dụng các công cụ đặc biệt như webdev, bạn có thể chỉnh sửa tệp Dart, làm mới Chrome và hiển thị các thay đổi gần như ngay lập tức.(hay gọi là hot debug).

1.2.2. Hệ thống package

 API lõi của Dart cung cấp các gói khác nhau, chẳng hạn như dart: io hoặc dart: collection, hiển thị các lớp và phương thức cho nhiều mục đích. Ngoài ra, có một kho lưu trữ trực tuyến chính thức được gọi là pub chứa các gói được tạo bởi nhóm Dart, nhóm Flutter hoặc những người dùng cộng đồng như bạn.

 Nếu bạn truy cập https://pub.dev, bạn sẽ tìm thấy vô số gói cho bất kỳ mục đích nào: xử lí I/O, XML serialization/de-serialization, localization, các tiện ích cơ sở dữ liệu SQL / NoSQL và nhiều hơn nữa.

 1. Truy cập https://pub.dev, kho lưu trữ chính thức;\

 2. Giả sử bạn đang tìm kiếm một thư viện giải phương trình. Nhập "phương trình" vào thanh tìm kiếm và lọc kết quả theo nền tảng. Một số gói chỉ có sẵn cho Dart, những gói khác chỉ có sẵn cho Flutter và một phần tốt hoạt động cho cả hai;

 3. Trang của gói chứa hướng dẫn cài đặt, tổng quan và hướng dẫn để bạn sẽ không bị lạc. Bạn nên kiểm tra số lượng lượt thích mà cộng đồng nhận được và danh tiếng tổng thể của gói vì những giá trị đó cho biết mức độ phát triển và hữu ích của sản phẩm. Bạn sẽ học cách viết thư viện đúng cách và cách tải nó lên kho lưu trữ pub.dev để cung cấp đóng góp của bạn cho sự phát triển của cộng đồng.

1.2.3. Hello word

 Cách đơn giản nhất để chạy mã Dart là mở Dartpad, một trình biên tập mã nguồn mở chạy trên bất kì trình duyệt nào. Bấm New Pad và tạo một dự án Flutter hoặc dart mới.

 Nó là một công cụ tuyệt vời cho người mới muốn làm quen với Dart và thử code nó. Nếu bạn bắt đầu làm quen với Dart, hãy sử dụng DartPad

 Đây là đôi điều về Dart mình muốn giới thiệu tới các bạn. Trong những blog sau, mình sẽ giới thiệu về Flutter và đi sâu vào ngôn ngữ Dart. Hẹn gặp lại các bạn.

Tham khảo cuốn: Flutter complete reference.