当我用DartEditor在Windows8中创建一个‘’时,它给了我这个层次结构
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/ file:
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 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.dart文件中导入这个库,这个库由clientview.html文件调用。
您的帮助将不胜感激!
发布于 2013-02-02 20:45:31
由于您使用的是相对导入,而且所有的东西似乎都是同一个库的一部分,所以我没有看到出现这些错误的明显原因。也许你可以分享更多的细节。
不过,您可能应该重新组织您的源树,使其更符合Pub标准。web/和lib/都应该是顶级目录,否则您将无法对自己的库进行package:导入。这就是为什么建议web/只包含入口点(带有main()方法的脚本)的原因之一,其他的东西都应该在lib/中。
而且,我会非常谨慎地使用part。我发现将几乎每个文件定义为库并只导入它们要好得多。它使每个文件的依赖关系更加清晰,并且允许使用者只导入接口,而不是导入实现。export使构建一个公开另一个定义的库成为可能。
最后,一个样式nit: Dart不是C#,我们在接口上没有使用那个丑陋的'I‘前缀:-)只需命名您的接口Drawable。
https://stackoverflow.com/questions/14666068
复制相似问题