减少Dart应用中的“部件”数量

时间:2015-08-01 03:59:57

标签: dart

我有一个使用partpart of的相当大的Dart应用程序,因此我不必使用相对import。但是,应用程序可能在入口点文件中具有类似的内容:

part 'file1.dart';
part 'file2.dart';
part 'file3.dart';
part 'some_sub_dir/file1.dart';
part 'some_sub_dir/file2.dart';
part 'some_sub_dir/file3.dart';
part 'some_sub_dir/file4.dart';
part 'some_sub_dir/file5.dart';
part 'some_sub_dir/file6.dart';
...

据我所知,我的IDE(WebStorm)在创建新类时不会自动添加part语句。有什么方法可以避免使用这么多part s吗?如果没有,每次添加新parts的过程是否可以自动化?

2 个答案:

答案 0 :(得分:2)

我尽可能理解你的问题,我会尝试回答我在达特的经历。

当我得到它时,你试图将所有(或很多)项目文件保存为一个库的一部分。这是错误的概念。在Dart库中并不是一件大事。以下是一些如何整理文件的建议。

  1. 不要试图将大量文​​件保存为一个库的一部分。而是将每个文件保存为独立的库。
  2. 您可以在一个文件中保留少量课程。但是要确保课程一起工作以实现一个想法。
  3. 只有当一个库有很多类或者一个类太大时,你才可以在几个部分文件中拆分它们。但请确保所有这些文件应该放在一个库中。
  4. 如果您不知道如何在库中组合类,请将每个类保留在独立的库中。几天后,您将了解哪些课程一起播放。
  5. 如果一个图书馆的一个班级不仅在图书馆而且在其他图书馆中使用 - 请将其分开库。
  6. 将部件放在与主库文件相同的文件夹中。
  7. 如果库有部件将所有库文件放入单独的文件夹中。
  8. 使用部件的相对链接。
  9. 始终使用与其他库的绝对链接。它将帮助您在将来进行重构。
  10. 例如,这是一个像TODO列表应用程序的项目。所以,我们有视图类:

    // This is a view html component class. //
    library todolist.list_viewer;
    
    import 'package:todolist/task.dart'; // model class
    
    class ListViewer extends HtmlElement {
      // it showes list of tasks
    }
    
    class TodoRenderer extends HtmlElement {
      // this is a renderer for one todo item
    }
    

    这是一个模型类:

    // This is a todo model task //
    library todolist.task;
    
    class TodoProvider {
      List<TodoItem> todos;
      String addItem(TodoItem new Todo) { 
        //... 
      }
    }
    
    class TodoItem {
      String Author;
      DateTime date;
    }
    

    现在看起来很简单,分成独立的库。但是如果我们想要添加RecId类来保持todo数据库id,它就变得太复杂了。我们应该将它拆分为两个库:todo_providertodo_model,并将RecId类放入最后一个库中。现在又好了。

    如果我们想再添加一个模型:User,那么每个待办事项都可能有执行者或作者。我们不能只把它todo_model。现在我们应该将TodoItemUser类合并到model库中。因此,我们只需将todo_model类重命名为model并将User类添加到其中。

    或者代替最后一项操作,我们可以让user_model库保留User类。并且由于User模型也具有recId属性,我们应该将RecId类提取到单独的库中。

    这完全取决于我们的课程如何大而复杂。

答案 1 :(得分:0)

我理解:

的一部分/一部分用于将库分成几个部分(脚本)。您可以看到公共和私人成员。

导入是&#34;调用/使用&#34;您图书馆的另一个图书馆。您只能看到导入库的公共成员。

WebStorm无法推断您希望脚本成为您库的一部分。