Top

Up

라이브러리와 가시성 (Libraries and visibility)

importlibrary 지시어는 모듈화 되고 공유 가능한 코드 기반을 만드는 데 도움이 될 수 있습니다. 라이브러리는 API를 제공 할뿐만 아니라 프라이버시 단위이기도 합니다. 밑줄 (_)로 시작하는 식별자는 라이브러리 내부에서만 볼 수 있습니다. 모든 Dart 응용 프로그램은 라이브러리가 아니며 library 지시문을 사용하지 않습니다.

라이브러리는 packages를 사용하여 배포 할 수 있습니다.

라이브러리 사용법 (Using libraries)

한 라이브러리의 네임스페이스를 다른 라이브러리의 스코프에서 사용하는 방법을 지정하려면 import를 사용하세요.

예를 들어 다트 웹 앱은 일반적으로 dart:html 라이브러리를 사용하며 다음과 같이 가져올 수 있습니다.

import 'dart:html';

import에 유일한 필수 인수는 라이브러리를 지정하는 URI입니다. 내장 라이브러리의 경우, URI는 특별한 dart:스키마(scheme)를 가지고 습니다. 다른 라이브러리의 경우 파일 시스템 경로 또는 package: 스키마를 사용할 수 있습니다. package: 스키마는 pub 도구와 같은 패키지 관리자가 제공하는 라이브러리를 지정합니다. 예 :

import 'package:test/test.dart';

Note: URI는 유일한(uniform) 자원 식별자를 나타냅니다. URLs (uniform resource locator)는 common kind of URI입니다.

라이브러리 전위자 지정 (Specifying a library prefix)

충돌하는 식별자가 있는 두 라이브러리를 가져 오는 경우 하나 또는 두 라이브러리의 전위자(prefix)를 지정할 수 있습니다. 예를 들어, 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();

라이브러리의 일부를 임포트 (Importing only part of a library)

라이브러리의 일부만 사용하려면 선택적으로 라이브러리를 가져올 수 있습니다. 예 :

// foo 만을 임포트.
import 'package:lib1/lib1.dart' show foo;

// foo를 제외한 모든 이름을 임포트.
import 'package:lib2/lib2.dart' hide foo;

라이브러리의 지연 로딩 (Lazily loading a library)

Deferred loading (lazy loading 이라고도 함)을 사용하면 필요할 때 라이브러리를 로드 할 수 있습니다. 지연로드를 사용할 수 있는 몇 가지 경우가 있습니다.

라이브러리를 지연 로드하려면 먼저 deferred as 를 사용하여 라이브러리를 가져와야 합니다.

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

라이브러리가 필요할때 라이브러리의 식별자를 사용하여 loadLibrary()를 호출하세요.

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

앞의 코드에서 await 키워드는 라이브러리가 로드 될 때까지 실행을 일시 중지합니다. asyncawait에 대한 더 자세한 정보는 asynchrony support를 참조하십시오.

라이브러리에서 loadLibrary()를 여러번 호출 할 수 있습니다. 라이브러리는 한 번만 로드됩니다.

지연로드를 사용할 때 다음 사항을 유의하십시오.

Dart VM difference: 다트VM은 loadLibrary()를 호출하기 전에 지연된 라이브러리의 멤버들에게 접근을 허용 합니다. 이 동작은 변경 될 수 있으므로 현재 VM 동작에 종속되지 않습니다. 자세한 내용은 [issue # 33118.]을 참조하십시오.

라이브러리 구현하기 (Implementing libraries)

라이브러리 패키지를 구현하는 방법에 대한 조언은 Create Library Packages 를 보세요. 이것은 다음을 포함하고 있습니다:


이전: 제네릭 (Generics)

다음: 비동기 지원 (Asynchorony support)

문서 변경 이력

2019년 5월 15일: 첫 작성.