Ngôn ngữ Dart sử dụng các package để chia sẻ phần mềm như thư viện và công cụ. Bài này cho bạn biết cách tạo một package, tập trung vào loại package phổ biến nhất, package thư viện.
Điều gì tạo nên một package thư viện?
Sơ đồ sau đây cho thấy cách bố trí của package thư viện đơn giản nhất:
Các yêu cầu tối thiểu đối với một thư viện là:
– tệp pubspec
Tệp pubspec.yaml cho một thư viện cũng giống như cho một package ứng dụng. Không có ký hiệu đặc biệt nào để chỉ ra rằng package đó là một thư viện.
– thư mục lib
Như bạn có thể mong đợi, mã thư viện nằm trong thư mục lib và công khai đối với các package khác. Bạn có thể tạo bất kỳ hệ thống phân cấp nào dưới lib, nếu cần. Theo quy ước, mã thực thi được đặt dưới lib / src. Mã dưới lib / src được coi là riêng tư; các package khác sẽ không bao giờ cần nhập src / …. Để đặt các API dưới lib / src ở chế độ công khai, bạn có thể xuất tệp lib / src từ tệp trực tiếp dưới lib.
Cấu thành một package thư viện
Package thư viện dễ bảo trì, mở rộng và kiểm tra nhất khi bạn tạo các thư viện nhỏ, riêng lẻ, được gọi là thư viện nhỏ. Trong hầu hết các trường hợp, mỗi lớp phải nằm trong thư viện nhỏ của riêng nó, trừ khi bạn gặp trường hợp hai lớp được kết hợp chặt chẽ với nhau.
Tạo tệp thư viện “chính” trực tiếp dưới lib, lib / <package-name> .dart, xuất tất cả các API công khai. Điều này cho phép người dùng có được tất cả các chức năng của thư viện bằng cách nhập một tệp.
Thư mục lib cũng có thể bao gồm các thư viện có thể nhập khác, không phải src,. Ví dụ: có thể thư viện chính của bạn hoạt động trên nhiều nền tảng, nhưng bạn tạo các thư viện riêng biệt dựa trên dart: io hoặc dart: html. Một số package có các thư viện riêng biệt được nhập với một tiền tố, trong khi thư viện chính thì không.
Hãy xem cách tổ chức package thư viện trong thế giới thực: giá sách. Package giá sách cung cấp một cách dễ dàng để tạo máy chủ web bằng Dart và được bố trí theo cấu trúc thường được sử dụng cho các package thư viện Dart:
Trực tiếp bên dưới lib, tệp thư viện chính, shelf.dart, xuất API từ một số tệp trong lib / src. Để tránh để lộ nhiều API hơn dự định – và để cung cấp cho nhà phát triển cái nhìn tổng quan về toàn bộ API công khai của package – chương trình sử dụng books.dart để chỉ định chính xác những ký hiệu nào cần xuất:
Package shelf cũng chứa một thư viện nhỏ: shelf_io. Bộ điều hợp này xử lý các đối tượng HttpRequest từ dart: io.
Nhập các tệp thư viện
Khi nhập tệp thư viện từ một package khác, hãy sử dụng chỉ thị package: để chỉ định URI của tệp đó.
Khi nhập tệp thư viện từ package của riêng bạn, hãy sử dụng một đường dẫn tương đối khi cả hai tệp nằm trong lib hoặc khi cả hai tệp nằm ngoài lib. Package sử dụng: khi tệp nhập nằm trong lib và tệp nhập ở bên ngoài.
Hình dưới đây cho thấy cách nhập lib / foo / a.dart từ cả lib và web.
Nhập và xuất các tệp thư viện có điều kiện.
Nếu thư viện của bạn hỗ trợ nhiều nền tảng, thì bạn có thể cần nhập hoặc xuất các tệp thư viện có điều kiện. Một trường hợp sử dụng phổ biến là một thư viện hỗ trợ cả nền tảng web và nền tảng gốc.
Để nhập hoặc xuất có điều kiện, bạn cần kiểm tra sự hiện diện của các thư viện dart: *. Dưới đây là một ví dụ về mã xuất có điều kiện để kiểm tra sự hiện diện của dart: io và dart: html:
Đây là những gì mã đó làm:
- Trong một ứng dụng có thể sử dụng dart: io (ví dụ: một ứng dụng dòng lệnh), hãy xuất src / hw_io.dart.
- Trong một ứng dụng có thể sử dụng dart: html (một ứng dụng web), hãy xuất src / hw_html.dart.
- Nếu không, hãy xuất src / hw_none.dart.
Để nhập tệp có điều kiện, hãy sử dụng mã tương tự như trên, nhưng thay đổi export thành import.
Trên đây là các chia sẽ của mình về tạo package trong ngôn ngữ dart.
Cảm ơn mọi người đã theo dõi.
Author: DuongVT19