Оценок пока нет Библиотеки и видимость в языке Dart

Директивы import и library могут помочь вам создать модульную и разделяемую базу кода. Библиотеки не только предоставляют API-интерфейсы, но и являются элементом конфиденциальности: идентификаторы, которые начинаются со знака подчеркивания (_), видны только внутри библиотеки. Каждое приложение Dart является библиотекой, даже если оно не использует директиву библиотеки library.

Библиотеки могут распространяться с использованием пакетов.

Использование библиотек

Используйте импорт import, чтобы указать, как пространство имен из одной библиотеки используется в области действия другой библиотеки.

Например, веб-приложения Dart обычно используют библиотеку dart: html, которую они могут импортировать следующим образом:

import 'dart:html';
Примечание: URI обозначает унифицированный идентификатор ресурса. URL-адреса (унифицированные указатели ресурсов) являются распространенным типом URI.
Указание префикса библиотеки

Если вы импортируете две библиотеки с конфликтующими идентификаторами, вы можете указать префикс для одной или обеих библиотек. Например, если library1 и library2 оба имеют класс Element, то у вас может быть такой код:

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;

// Uses Element from lib1.
Element element1 = Element();

// Uses Element from lib2.
lib2.Element element2 = lib2.Element();
Импорт только части библиотеки

Если вы хотите использовать только часть библиотеки, вы можете выборочно импортировать библиотеку. Например:

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;
Библиотека с отложенной загрузкой(lazily loading)

Отложенная загрузка (также называемая отложенной загрузкой) позволяет веб-приложению загружать библиотеку по требованию, если и когда она необходима. Вот несколько случаев, когда вы можете использовать отложенную загрузку:

  • Чтобы уменьшить начальное время запуска веб-приложения.
  • Выполнить A / B-тестирование — например, попробовать альтернативные реализации алгоритма.
  • Для загрузки редко используемых функций, таких как дополнительные экраны и диалоги.
Только dart2js поддерживает отложенную загрузку. Flutter, Dart VM и dartdevc не поддерживают отложенную загрузку. Для получения дополнительной информации см. Выпуск № 33118 и выпуск № 27776.

Чтобы отложено загрузить библиотеку, вы должны сначала импортировать ее, используя deferred as

import 'package:greetings/hello.dart' deferred as hello;

Когда вам нужна библиотека, вызовите loadLibrary(), используя идентификатор библиотеки

Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

В предыдущем коде ключевое слово await приостанавливает выполнение до загрузки библиотеки. Для получения дополнительной информации об async и await см. Поддержку асинхронности.

Вы можете вызывать loadLibrary() несколько раз в библиотеке без проблем. Библиотека загружается только один раз.

При использовании отложенной загрузки помните следующее:

  • Константы отложенной библиотеки не являются константами в импортируемом файле. Помните, что эти константы не существуют, пока не будет загружена отложенная библиотека.
  • Вы не можете использовать типы из отложенной библиотеки в импортируемом файле. Вместо этого рассмотрите возможность перемещения типов интерфейса в библиотеку, импортированную как отложенной библиотекой, так и импортирующим файлом.
  • Dart неявно вставляет loadLibrary() в пространство имен, которое вы определяете, используя deferred as namespace. Функция loadLibrary() возвращает Future.

Реализация библиотек

Посмотрите Создание Библиотечных пакетов для совета относительно того, как реализовать пакет библиотеки, включая:

  • Как организовать исходный код библиотеки
  • Как использовать директиву export
  • Когда использовать директиву part
  • Когда использовать директиву library.

Пожалуйста, оцените материал

WebSofter

Web - технологии