3

我正在尝试我的第一个 Dart 网络应用程序,并且不希望将我的应用程序的任何部分变成其他应用程序/库的可重用库。因此,我的项目中没有lib目录;相反,我有一个web目录。

我想我的意图是让我的web目录看起来像这样:

web/
    Main.dart <-- where my main method is
    logging/
        Logger.dart
        LogLevel.dart
    model/
        Signin.dart
        Signout.dart
    view/
        SigninView.dart
        signinView.html
    presenter/
        SigninPresenter.dart
    ...lots of other packages

几个问题:

  1. 我的整个申请(下的所有内容web)是否应该被视为同一申请的一部分library?如果是这样,我会放在library myapp;每个 Dart 文件的顶部吗?否则,a 的粒度级别是library多少?我应该把它放在包级别,并且有LoggerLogLevel里面library logging;吗?它是在类/文件级别并且有 alibrary logger和 alibrary log_level吗?
  2. 我的web目录设置正确吗?我来自 Java,所以我将web其视为与 Java/Maven 的目录相同的src/main/java目录,并在其下设置一个包结构web对我来说很有意义......
  3. 我知道该import关键字用于从其他包中导入源类型。但那又如何export——那有什么作用呢?
4

1 回答 1

1

我建议您有一个lib/目录并将共享代码放入其中。如果您的应用程序的其他部分不直接使用该代码,请将该代码src/移至lib/. 我意识到你不打算让你的应用程序可以被其他应用程序重用,但你的应用程序不同部分使用的代码可能应该存在于lib/.

这在很大程度上是为了方便和约定,但我尽量保持我的web/目录非常精简,甚至只将那些.dart在文件中直接引用的.html文件放在其中。您的里程可能会有所不同,但我发现这种约定(将共享代码lib/和特定于 Web 的代码放入web/有助于保持清晰)。

至于库指令,我喜欢使用与应用程序名称相同的单个命名空间。

因此,lib/models.dart可以像这样声明一个库:

library myApp.models;

`web/foo/bar.dart' 中的库可以这样声明:

library myApp.web.foo.bar;
于 2013-12-26T22:41:17.333 回答