Dartのimport・export・part・libraryの違い
はじめに
Dart言語で普段使用している import , export , part など、普通に使用していましたが、あまり詳しく調べたことはなかったので、まとめてみました。
import
他のライブラリを現在のファイルに取り込むために使用します。
import 'dart:math'; // 標準ライブラリ
import 'package:http/http.dart' as http; // 外部パッケージ
import 'my_library.dart'; // 自作ライブラリ
import のオプション
as: 名前空間を指定show: 特定の要素のみインポートhide: 指定した要素を除外
import 'package:http/http.dart' as http; // エイリアスを付ける
import 'my_library.dart' show MyClass; // MyClassのみインポート
import 'another_library.dart' hide UnwantedClass; // UnwantedClassを除外
また公式ドキュメントを見てみると、条件付きのimportも可能のようです。
library
Dart 2.0以降では明示的にlibraryを宣言する必要はなくなりましたが、名前空間を定義するために使用できます。
library my_library;
現在ではあまり使われません。
export
他のファイルからインポートしやすくするために、複数のライブラリをまとめてエクスポートできます。
import と同様に as , show , hide を使用できます。
// all.dart
export 'file1.dart';
export 'file2.dart';
このファイルをインポートすると、file1.dartとfile2.dartの内容も利用できます。
import 'all.dart';
主にパッケージを作った際に使用することが多い気がします。
各ファイルを個別に import する必要がなくなり、簡単に import できるのがメリットかと思います。
またパッケージ外では公開したくない場合でも使用できるかと思います。
part
1つのライブラリを複数のファイルに分割するために使います。partを使うと、1つのファイルの一部として別のファイルを組み込めます。
// main.dart
library my_library;
part 'part1.dart';
part 'part2.dart';
// part1.dart
part of my_library;
void function1() {
print("Function 1");
}
// part2.dart
part of my_library;
void function2() {
print("Function 2");
}
main.dart で function1() や function2() を直接呼び出せます。
part of
part ファイルがどのライブラリの一部であるかを指定します。
part of my_library;
part で取り込まれたファイルには必ず part of を指定する必要があります。
まとめ
| キーワード | 説明 |
|---|---|
| import | 他のライブラリを読み込む |
| library | (ほぼ不要) ライブラリ名を定義 |
| export | 他のファイルへライブラリを公開 |
| part | ファイルを分割する |
| part of | 分割されたファイルがどのライブラリに属するか定義 |
最後に
part , part of はfreezedなど自動生成形のライブラリでよく見ますが、あまり使ったことがなかったので勉強になりました。
part を使うとファイルを分割することができ、管理がしやすくなりそうな気がするので模索していきたい。