2012-08-03 78 views
1

库的基本用法是通过定义就像它的名字:如何处理Dart中更深层次的图书馆层次结构?

#library('Name'); 

在我的情况,我想定义“嵌套”或“更深”库层次结构。所以,如果我有一个框架调用Foo,让我们说我建库Messenger

#library('Messenger'); 

恐怕会用别的东西发生冲突。我正在寻找的东西是这样的:

#import('Foo.Messenger'); 

所以很明显,信使库是Foo库集的一部分。

什么是解决这个问题的推荐方法?据我所知,人们会参考你的库,如:

#import('package:Foo.Messenger') 

回答

1

如果你很担心自己的库可与命名空间冲突,则一个前缀需要使用时的定义。但是,在使用库时,您不能强制别人使用前缀。

要使用前缀自己想导入这样的:需要被称为这样

#import('lib/library.dart', prefix: 'myLib'); 

不过,现在从库中导入:

var item = new myLib.SomeClass(); 

进一步详情,请参阅本link

问题的最后一晚定义了一个包,用于分发和导入可能是一个或多个第三方库的方法。它仍在经历很多发展,但它不会改变你的图书馆一旦被导入就被调用。

查看此link了解有关Dart中Pub封装管理器的信息。

+0

我理解我到目前为止完成了两个包。我也知道我读过语言游览和规范的前缀,但我不知道如何避免与*库名称冲突*。也就是说,为什么你写'#library(...);'是有目的的。例如名称是用于反射(即将发布的功能)。 – Tower 2012-08-03 15:54:09

+0

正确,但是按文件名称导入,而不是按库名称导入。库名称是内部标识符。如果你愿意,你可以使用类似于'核心'文件的东西,并命名你的库,例如: #library(“packageName:lib1”) #library(“packageName:lib2”) 等。不是按您定义的名称导入。 – 2012-08-03 16:00:19