在转换为javascript时,Google Dart如何处理命名空间/包?

Asp*_*ger 2 dart

我可以说两个游戏项目:动物园1和动物园2.两个都有一个名为animal的类.为了避免两个具有相同名称的类之间的冲突,我将它们包装在函数中.Dart如何处理这种情况?通过包或库?用作命名空间的主类?如果是这样,那么它如何将它们转换为javascript?

Gün*_*uer 5

Dart没有名称空间.您可以使用导入前缀

import 'package:zoo1/zoo1.dart' as zoo1;
import 'package:zoo2/zoo2.dart' as zoo2;

main() {
  print(new zoo1.Animal());
  print(new zoo2.Animal());
}
Run Code Online (Sandbox Code Playgroud)

您也可以仅为其中一个使用前缀

import 'package:zoo1/zoo1.dart';
import 'package:zoo2/zoo2.dart' as zoo2;

main() {
  print(new Animal());
  print(new zoo2.Animal());
}
Run Code Online (Sandbox Code Playgroud)

如果你想同时导入,但只希望使用Animalzoo2那么你可以隐藏一个

import 'package:zoo1/zoo1.dart' hide Animal;
import 'package:zoo2/zoo2.dart';

main() {
  print(new Animal()); // uses Animal from zoo2 
}
Run Code Online (Sandbox Code Playgroud)

我假设JS总是使用一些前缀来消除歧义.