从lib / -folder提供.dart文件

时间:2014-02-02 09:17:18

标签: dart dart-pub

这是我的(简化)文件夹结构:

/
  pubspec.yaml
  build/
    client.dart.js, etc
  lib/
    game.dart
  server/
    server.dart
  web/
    client.dart
    canvas.dart
    index.html

我正在使用“dartiverse search”-sample中的代码来提供这些文件(简化):

var buildDirectory = new Http.VirtualDirectory(buildPath);
buildDirectory.jailRoot = false;

// Serve everything not routed elsewhere through the virtual directory.
buildDirectory.serve(router.defaultStream);

// Special handling of client.dart. Running 'pub build' generates
// JavaScript files but does not copy the Dart files, which are
// needed for the Dartium browser.
router.serve("/client.dart").listen((request) {
  Uri clientScript = Platform.script.resolve("../web/client.dart");
  buildDirectory.serveFile(new File(clientScript.toFilePath()), request);
});

router.serve("/canvas.dart").listen((request) {
  Uri clientScript = Platform.script.resolve("../web/canvas.dart");
  buildDirectory.serveFile(new File(clientScript.toFilePath()), request);
});

router.serve("/lib/game.dart").listen((request) {
  Uri clientScript = Platform.script.resolve("../lib/game.dart");
  buildDirectory.serveFile(new File(clientScript.toFilePath()), request);
});

我的问题是:是否有更好的方法来在项目中提供文件,其中.dart文件分为lib /和web / -folders?上面显示的方法可能适用于少数几个文件,但是如果我的项目增长并且我有50个这样的.dart文件呢?

1 个答案:

答案 0 :(得分:1)

我通常将我的VirtualDirectory指向web /所以你不需要在web /中映射文件的路径。

对于lib中的文件/ Dart编辑器(Pub)在web /中创建一个符号链接包,它指向项目中的packages目录。该packages目录还包含lib /的内容,因此您可以使用/packages//game.dart访问game.dart相对于web /。 您的dart代码中的包导入也将使用此路径来获取源。

现在,所有文件都将由VirtualDirectory提供,您只需要路由器来处理诸如websockets等内容。