ライブラリと可視性

2230 ワード

importとlibrary機構を使ってモジュールと共有できるコードを作成します.
ライブラリはAPIを提供することができますが、_最初に定義した変数や方法はライブラリ内でのみ使用できます.
どのDartのAppも同じライブラリで、たとえそれがLibraryの仕組みを使っていないとしても.
  • ライブラリの声明
  • Dart 2のライブラリはLibraryでライブラリの名前を宣言してもいいです.使わなくてもいいです.
    library hello;
  • ライブラリの導入
  • importキーを使ってライブラリに導入します.導入ライブラリには次の3つの方法があります.
    1.同ライブラリファイルを導入し、ライブラリを直接使用する経路:import「Path/name.dart」.
    2.Dart言語内部のライブラリを導入するには、経路前にdart:imprrt"dart:"を追加する必要があります.
    3.サードパーティライブラリを導入するには、パスの前にpackage:import「Path/name.dart」を追加する必要があります.
    導入されたライブラリはasで名前を変更し、異なるライブラリ変数名の衝突を防ぐことができます.別名を使用すると、導入したライブラリのオブジェクトを呼び出すには別名を持つ必要があります.
    ショーとhideのキーワードを使用して、単独でライブラリの中のあるAPIを導入または削除することができます.
    import "hello.dart"; //        hello.dart  
    import "http://xxx/xx.dart"; //    url,     
    import "dart:html"; //   Dart2  html 
    import "package:lib1/lib1.dart"; //   lib1   lib1.dart
    import "package:lib2/lib2.dart" as lib2; //   lib2   lib2.dart,      lib2
    import "package:lib3.dart" show Foo; //    lib3.dart  Foo  
    import "package:lib4.dart" hide Foo; //   Foo  ,      lib4.dart    
    //   Element   lib1
    Element element1 = Element();
    
    //   Element   lib2
    lib2.Element element2 = lib2.Element();
  • ライブラリの分割 
  • 大きなライブラリファイルをいくつかの比較的小さいファイルに分割してもいいです.これらのファイルはパーティーを通じて関連付けられます.各partに関連するファイルの間で、すべての名前空間を共有しながら、すべてのオブジェクトを共有します.
    part分割を使用する場合、ライブラリはlibrary声明を使用しなければならない.
    PS:partの導入書類はurlを使ってもいいですが、勧められません.パーティーhttp://xxx/xx.dart";
    //     test.dart
    library testall;
    import "dart:html";
    
    part("test1.dart"); //   test1.dart  
    part("test2.dart");
    
    //   test1.dart
    part of testall; //    testall    ,     dart:html,      
    
    //   test2.dart
    part of testall; //    testall    
  • 遅延負荷
  • 使用するdeferred as キーを押すと、ライブラリの遅延読み込みが可能です.loadLibraryを使ってロードして、何度も呼び出すことができますが、一回だけ実行して、Futureオブジェクトに戻ります.
    なぜ遅延ローディングを使うのですか?
    1.APPの起動時間を減らす.
    2.遅延負荷が少ない機能
    import 'package:greetings/hello.dart' deferred as hello; //        ,     
    
    Future greet() async {
      await hello.loadLibrary();
      hello.printGreeting();
    }
     
    どのようにライブラリを作成するかは、この章では議論されていません.公式文書を参照することができます.