gpt4 book ai didi

dartEditor 文件层次结构和库/部件逻辑

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

当我在 Windows8 中使用 DartEditor 创建一个“Web 应用程序”时,它给了我这个层次结构

ClientView/
packages/
pubspec.lock
pubspec.yaml
web/
packages/
clientview.css
clientview.dart
clientview.dart.js
clientview.dart.js.deps
clientview.dart.js.map
clientview.html

然后我添加 lib/文件:
  web/
...
lib/
src/
canvas.dart
i_drawable.dart
node.dart
client_canvas.dart
...

client_canvas.dart 文件

library client_view;

import 'dart:html';
import 'package:meta/meta.dart';

// Interface
part 'src/i_drawable.dart';

// Class
part 'src/canvas.dart';
part 'src/node.dart';

在“part”关键字之后包含的每个文件中,我都添加了这一行:

part of client_view;

但似乎没有一个类可以被其他 Dart 代码访问

class Canvas implements IDrawable // no such type 'IDrawable'
abstract class Node implements IDrawable // no such type 'IDrawable'
class CustomNode extends Node // no such type 'Node' (if try to create a custom node)

我想这是我还不了解的酒吧和图书馆的组织方式。

所以我试图做的是在同一个项目中创建一个库,我想将该库导入到由 clientview.html 文件调用的 clientview.dart 文件中。

您的帮助将不胜感激!

最佳答案

由于您使用的是相对导入,并且所有内容似乎都是同一个库的一部分,因此我认为没有明显的错误原因。也许你可以分享更多细节。

不过,您可能应该重新组织您的源代码树以更符合 Pub 标准。 web/lib/都应该是顶级目录,否则你不能做package:导入您自己的库。这就是为什么推荐 web/ 的原因之一。仅包含入口点(带有 main() 方法的脚本),其他所有内容都应在 lib/ 中.

另外,我会尝试使用 part非常谨慎。我发现将几乎每个文件都定义为库并导入它们要好得多。它使每个文件的依赖关系更加清晰,并允许消费者只导入接口(interface),而不是实现。 export使构建一个公开另一个定义的库成为可能。

最后,风格 nit:Dart 不是 C#,我们不会在接口(interface)上使用那个丑陋的“I”前缀 :-) 只需将您的接口(interface)命名为 Drawable .

关于dartEditor 文件层次结构和库/部件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666068/

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