Kutubxonalar bor a yo'l uchun tuzilishi a loyiha asoslangan yoqilgan modullilik, qaysi imkon beradi the dasturchi kodni bir nechta fayllarga bo'lish va kod yoki modulning bir qismini boshqa ishlab chiquvchilar bilan baham ko'rish uchun.
Ko'pchilik dasturlash tillar foydalanish kutubxonalar uchun ta'minlash bu modullilik uchun the dasturchi, Dart esa yo'q boshqacha. Dartda bular kutubxonalarda ham mavjud kodni tuzishdan tashqari yana bir muhim rol. Ya'ni, ular boshqa kutubxonalarga nima ko'rinadigan yoki ko'rinmasligini aniqlaydilar.
Dart to'plamiga kirishdan oldin biz kutubxonaning eng kichik birligini tushunishimiz kerak iborat ning. Birinchidan, qilaylik kashf qiling Qanday uchun foydalanish a kutubxona ichida bizning paket va, shundan so'ng , Dart-da kutubxonani qanday aniqlashni o'rganing.
Import qilinmoqda va foydalanish a kutubxona
In Bob 1 , An Kirish uchun Dart , ichida the Funksiyalar Bo'lim, biz import qilingan the meta @required dan foydalanish uchun kutubxona ba'zi parametrlarga izoh. Keling, kashf qilaylik
the Import bayonot ichida batafsilroq .
Kutubxonani aniqlash uchun biz oddiygina yaratmoq ichida ba'zi kodlari bo'lgan Dart fayli .
In bu misol, biz belgilangan a oddiy kutubxona bilan the Shaxs , Talaba va xodim PersonType bilan birga sinflar raqam:
// person_lib kutubxona - the Sinflar tarkibi edi kesilgan uchun qisqalik
sinf Shaxs { String ism; String familiya; Shaxs turi turi;
Shaxs([bu.firstism, this.lastName]);
String olish to'liq ism => "$firstName $lastName";
}
enum Shaxs turi { talaba, xodim }
sinf Talaba uzaytiradi Shaxs {
Talaba([ismi, familiya]): super(ismi, familiya) { turi = PersonType.student;
}
}
sinf Xodim uzaytiradi Shaxs {
Xodim([ismi, familiya]): super(ismi, familiya) { turi = PersonType.employee;
}
}
Kimga Import bu, biz mumkin shunchaki qo'shish the Import kutubxona_yo'li; bayonot da the boshlanishi faylning va har qanday koddan oldin:
Import 'person_lib.dart'; bekor asosiy() {
Shaxs odam = Shaxs ("Klark", "Kent");
// o'tkazib yuborilgan the ixtiyoriy "yangi" kalit so'z Shaxs talaba = Talaba ("Klark", "Kent");
chop etish ("Shaxs: ${person.fullName}, turi: ${person.type}"); chop etish ("Talaba: ${student.fullName}, turi: ${student.type}");
}
Sifatida the fayllar bor the bir xil katalog, the Import yo'l hisoblanadi shunchaki Fayl nomi. Qo'shgandan keyin
the Import bayonot, biz mumkin foydalanish har qanday mavjud kod dan bu - ichida the bir xil yo'l bu biz Shaxs bilan qilgan va Talaba sinflar.
Import qilinmoqda ko'rsatish va yashirmoq
Agar siz olish a qarang da the Oldingi misol, siz bo'ladi xabarnoma bu biz bor emas ishlatilgan hammasi ning person_lib dan mavjud sinflar kutubxona. Kodni tozaroq qilish va xatolar va nomlash mojarolariga kamroq moyil bo'lish uchun biz shoudan foydalanishimiz mumkin kalit so'z, bu bizga faqat kodimizda samarali foydalanmoqchi bo'lgan identifikatorlarni import qilish imkonini beradi:
// Import 'person_lib.dart' ko'rsatish Shaxs, talaba;
Biz ham belgilashi mumkin the identifikatorlar biz aniq istamayman uchun tomonidan import qilinadi foydalanish
the yashirmoq kalit so'z. In bu hol, biz bo'ladi bo'l import qilish hammasi ning the identifikatorlar dan the jilddan keyingi kutubxonalar bundan mustasno kalit so'z:
// Import 'person_lib.dart' yashirmoq xodim;
kutubxonalarga import qilish
Dart-da nom maydoni ta'rifi yoki kutubxonani noyob tarzda aniqlaydigan biror narsa yo'q kontekst bu bu hisoblanadi ishlatilgan, shunday ziddiyatlar mumkin sodir bo'lmoq qachon yaratish identifikator ismlar, bu kutubxonalar mumkin aniqlash a yuqori darajali funktsiyasi yoki hatto a sinf bilan the bir xil nomi. Garchi spektakldan foydalanishimiz mumkin va yashiring kutubxonadan qaysi a'zolarni import qilmoqchi ekanligimizni aniq belgilash uchun modifikatorlar mavjud bo'lsa, bu muammoni hal qilish uchun etarli emas, chunki ba'zida bizni turli kutubxonalarda bir xil nomga ega ba'zi sinf yoki yuqori darajadagi funksiya qiziqtirishi mumkin:
Yaxshiyamki, Dart ega a yo'l uchun ish atrofida bu. The kabi kalit so'z mumkin bo'l qo'shildi keyin Import bayonot uchun o'rnatish a prefiks uchun hammasi ning the identifikatorlar dan the import qilingan kutubxona:
Import 'a.dart' kabi kutubxonaA; Import 'b.dart' kabi kutubxonaB;
bekor asosiy() {
kutubxonaA.Shaxs shaxsA = libraryA.Person("Klark", "Kent"); chop etish ("Shaxs A: ${personA.fullName}");
kutubxonaB.Shaxs shaxsB = libraryB.Person(); // "b" Shaxs qiladi emas
// bor har qanday maydon
chop etish ("Shaxs B: ${personB}");
}
Ko'rib turganingizdek, bu prefikssiz bizda qaysi Shaxsni aniqlashning usuli yo'q foydalanish uchun sinf. The bir xil amal qiladi uchun har qanday ommaviy kutubxona identifikator, shunday kabi a funktsiyasi yoki a o'zgaruvchan. Prefiksni ko'rsatgandan so'ng, biz uni faqat ziddiyatli bo'lganlarga emas, balki ushbu kutubxona a'zosiga har bir qo'ng'iroqqa qo'shishimiz kerak.
Yoʻl variantlari import qilinmoqda
In the oldingi misollar, biz import qilingan a mahalliy fayl kutubxona bu yashaydi ichida the bir xil katalog kutubxona mijozi sifatida biz faqat fayl nomini ko'rsatdik.
Biroq, bu emas the hol uchun qachon siz bor foydalanish uchinchi tomon Dart paketlar. In bu Bunday holda, fayllar bir xil katalogda mavjud bo'lmaydi, shuning uchun biz tashqi Dart kutubxonasini qanday import qilishimizni ko'rib chiqamiz.
Importda kutubxona yo'llarini belgilashning bir necha yo'li mavjud bayonot va bizda allaqachon mavjud ishlatilgan ikki ning ular: qarindosh fayl Import va import qilish dan a paketi . Endi, qilaylik ularning barchasini batafsilroq ko'rib chiqing.
Keling faraz qilmoq bu biz bor a paket katalog ning a kichik foo paket o'z ichiga olgan ikkita fayl: a.dart va b.dart . Ularni import qilish uchun biz bir nechta yondashuvlardan foydalanishimiz mumkin:
A qarindosh fayl yo'l : Bu hisoblanadi o'xshash uchun the usuli bu biz ishlatilgan ichida the oldingi misol, chunki kutubxonalar bir papkada edi. Biz import qilmoqchi bo'lgan kutubxona fayliga nisbiy yo'lni quyidagicha qo'yishimiz mumkin:
Import 'foo/a.dart'; Import 'foo/b.dart';
An mutlaq fayl yo'l : Biz mumkin qo'shish the mutlaq yo'l yoqilgan the kompyuter uchun a faylni qo'shish orqali kutubxona fayli : // Import yo'liga URI prefiksi:
Import "file:///c:/dart_package/foo/a.dart"; Import "file:///c:/dart_package/foo/b.dart";
A URL ustida the veb : In the bir xil yo'l kabi foydalanish a mutlaq fayl yo'l, biz mumkin kutubxonaning manba kodini o'z ichiga olgan veb-saytning URL manzilini to'g'ridan-to'g'ri qo'shing
the http:// protokol:
Import "http://dartpackage.com/dart_package/foo/a.dart";
Paket : Bu kutubxonani import qilishning eng keng tarqalgan usuli. Bu erda biz paketdan kutubxona yo'lini belgilaymiz ildiz. Paketlar ta'rifini keyinroq o'rganamiz ichida bu bo'lim; ichida the hol ning import qilish a mahalliy kutubxona, bu ketadi dan the ildiz to'plamdan kutubxona fayligacha manba daraxtidan pastga :
Import 'paket: my_package/foo/a.dart'; Import 'paket: my_package/foo/b.dart';
The paket usuli hisoblanadi the tavsiya etiladi yo'l uchun Import kutubxonalar, kabi bu ishlaydi yaxshi
bilan mahalliy kutubxonalar (bu bu, sizning loyihasi mahalliy fayllar va kutubxonalar) va hisoblanadi the yo'l uchun foydalanish uchinchi tomon paketlaridan taqdim etilgan kutubxonalar.
Do'stlaringiz bilan baham: |