Je ne comprends pas complètement la différence entre part
/part of
et import
/export
lors de l'utilisation de bibliothèques dans Dart. Par exemple:
one.Dart:
library one;
part "two.Dart";
Class One {
};
et
two.Dart:
part of one;
import 'somefile.Dart';
Class Two {
}
versus
library one;
import 'two.Dart';
Class One {
}
et
library two;
import 'somefile.Dart';
export 'somefile.Dart';
Class Two {
}
Les deux scénarios semblent faire la même chose. Quand est-il avantageux d'utiliser part
et part of
plutôt que import
? Et y a-t-il des scénarios où import
ne fonctionnera pas, mais part
et part of
volonté?
mise à jour 2018/03
part
et part of
est de plus en plus utilisé pour les scénarios de génération de code récemment (au lieu des transformateurs obsolètes) et il est peu probable qu'il disparaisse de sitôt.
Des packages comme built_value
, json_serializable
, et bien d'autres en dépendent.
Découragé n'est que le bagout où tous les fichiers d'un package sont liés à une seule bibliothèque en ayant un fichier de bibliothèque et tous les autres fichiers faisant partie de cette bibliothèque.
original
Dans Dart, les membres privés sont accessibles dans la même bibliothèque. Avec import
vous importez une bibliothèque et ne pouvez accéder qu'à ses membres publics. Avec part
/part of
vous pouvez diviser une bibliothèque en plusieurs fichiers et les membres privés sont accessibles pour tout le code dans ces fichiers.
voir les clarifications du paragraphe ci-dessous dans la mise à jour ci-dessus
Utilisation de part
/part of
est découragé et l'équipe Dart envisage de s'en débarrasser. Je suppose qu'ils introduiront quelque chose comme "ami" ( https://github.com/Dart-lang/sdk/issues/22841 ), où deux bibliothèques peuvent accéder aux membres privés de l'autre comme alternative avant ils arrêtent part
/part of
(peut-être dans une future version de Dart).
L'article Création de packages de bibliothèque sur le site dartlang.org recommande d'éviter part
/part of
.
Remarque: Vous avez peut-être entendu parler de la directive Part, qui vous permet de diviser une bibliothèque en plusieurs fichiers Dart. Nous vous recommandons d'éviter d'utiliser des pièces et de créer des mini-bibliothèques à la place.
Les "mini bibliothèques" auxquelles il est fait référence sont de petits fichiers Dart de bibliothèque dans src
qui sont importés et exportés depuis les bibliothèques principales.
Supposons que nous ayons un Dart bibliothèque appelé mylib
, dont le fichier est lib/mylib.Dart
.
library mylib;
// Definitions
Cette bibliothèque peut être incluse dans le main.Dart
fichier en tant que
import 'package:mypackage/mylib.Dart';
Lorsque vous créez une nouvelle bibliothèque et utilisez d'autres bibliothèques que vous souhaitez rendre disponibles automatiquement lors de l'utilisation de votre package, vous utilisez alors export
:
library mylib;
export 'otherlib.Dart';
// Definitions
Vous pouvez utiliser le mot clé show
pour importer/exporter uniquement certaines parties d'une bibliothèque (comme une classe ou quelque chose).
Vous utilisez le part of
directive incorrecte ici. Vous ne pouvez pas utiliser à la fois library
et part of
, qui est utilisé pour spécifier le contenu qui appartient à une bibliothèque. Par exemple, vous pouvez diviser votre fichier de bibliothèque en plusieurs fichiers (les parties):
Supposons que nous ayons dans le fichier mylib.Dart
:
library mylib;
part 'src/class1.part';
// More parts
Et puis nous avons dans un autre fichier src/class1.part
la partie spécifiée dans mylib.Dart
part of mylib;
class Class1 {
/* ... */
}