본문 바로가기
기타개발/Flutter

Dart #9 : Library

by 궝테스트 2020. 8. 28.

Dart : https://dart.dev/guides/language/language-tour

 

1. Using libraries

  • import 를 사용하면 라이브러리의 네임 스페이스가 다른 라이브러리 범위에서 사용할 수 있다
// dart:html 라이브러리를 import 한다
import 'dart:html';

// test 패키지 라이브러리를 가져올 경우
import 'package:test/test.dart';

 

2. Specifying a library prefix

  • 충돌하는 식별자가있는 두 개의 라이브러리를 가져 오는 경우 접두사를 지정할 수 있다
// lib1 과 lib2 에 모두 Element 클래스가 있는 경우
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2; // as 로 lib2 로 정의해준다

// lib1 의 Element 는 그냥 사용하면 된다
Element element1 = Element();

// lib2 의 Element 는 위에서 지정한 lib2 로 가져와서 사용한다
lib2.Element element2 = lib2.Element();

 

3. Importing only part of a library

  • 라이브러리의 일부만 사용하려는 경우 필요한 라이브러리만 가져올 수 있다
// lib1 의 foo 만 import 한다
import 'package:lib1/lib1.dart' show foo;

// lib2 의 foo 를 제외한 모든걸 import 한다
import 'package:lib2/lib2.dart' hide foo;

 

4. Lazily loading a library

  • 지연 로딩을 사용하면 라이브러리가 필요한 경우 웹앱이 요청시에 로드 할 수 있다
  • 지연 로딩을 사용할 수있는 경우는 아래와 같다
    • 웹앱의 초기 시작 시간을 줄이기 위해
    • 알고리즘의 대체 구현을 시도하는 등의 A/B 테스트 수행 시
    • 선택적 화면과 다이얼로그 같이 거의 사용되지 않는 기능을 로드할 때
  • dart2js 만 지연 로딩을 지원한다
  • Flutter, Dart VM 및 dartdevc 는 지연 로딩을 지원하지 않는다
// deferred as 로 hello 로 지연 로딩 한다
import 'package:greetings/hello.dart' deferred as hello;

// 라이브러리가 필요 할 때, 위에서 정한 라이브러리 식별자인 hello 로 loadLibrary() 를 호출한다
Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}
  • 위 코드에서 await 키워드는 라이브러리가로드 될 때까지 실행을 일시 중지한다
  • 지연 로딩을 사용하는 경우 유의 사항
    • 지연된 라이브러리의 상수는 import 파일의 상수가 아니다
      이 상수는 지연된 라이브러리가 로드 될 때까지 존재하지 않는다
    • import 파일에서 지연된 라이브러리의 타입을 사용할 수 없다
      대신 지연된 라이브러리와 import 파일에 의해 import 된 라이브러리로 인터페이스 타입을 이동하는게 좋다
    • Dart는 deferred as namespace 를 사용하여 정의한 네임스페이스에 loadLibrary() 를 암시 적으로 삽입한다
      loadLibrary() 함수는 Future 를 반환한다


5. Implementing libraries

  • Create Library Packages 참고
    • 라이브러리 소스 코드를 구성하는 방법
    • export 지시문을 사용하는 방법
    • part 지시문을 사용하는 경우
    • library 지시문을 사용하는 경우
    • 조건부 import 와 export 를 사용하여 여러 플랫폼을 지원하는 라이브러리를 구현하는 방법

 

댓글