gpt4 book ai didi

dart - 从 lib/-folder 提供 .dart 文件

转载 作者:行者123 更新时间:2023-12-03 03:03:00 24 4
gpt4 key购买 nike

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

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

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

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/文件夹之间拆分?上面显示的方法可能适用于一些文件,但如果我的项目增长并且我有 50 个这样的 .dart 文件怎么办?

最佳答案

我通常将我的 VirtualDirectory 指向 web/,因此您无需在 web/中映射文件的路径。

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

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

关于dart - 从 lib/-folder 提供 .dart 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com