web-dev-qa-db-fra.com

Quand utiliser une partie / une partie de ou une importation / exportation dans Dart?

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é?

30
rchkm

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).

24
Günter Zöchbauer

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.

7

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 { 
  /* ... */
}
6
Robert