Dart App组织子模块

时间:2014-03-14 07:18:56

标签: module dart project-management dart-polymer

这个问题分为两部分。第一个可以归结为Public Image Limited,“这就是你想要的东西/这就是你得到的东西。

我将通过指向教程来简化问题:

决定'我想将不同的元素视为项目资产(可以这么说)。所以我创建了一个子文件夹:名为:组件,位于 $ / web / 文件夹下面,每个:

这样的事情:

enchilada/
   :
  web/
    index.html
    main.dart
    style.css
    components/
        tut_stopwatch.html
        tut_stopwatch.dart

当我这样做时: Dart Editor 变得非常困惑。首先,我需要指定“我想要什么”,然后描述“我得到什么”[got]

我想要

  • Dart让我将子模块放在下级文件夹中。
  • 在这种情况下,自定义元素如“tut_stopwatch”,进行适当的调整以进行路径更改(我做过)。
  • 理想情况下,我更喜欢Dart可以在多个级别集成下级模块。
  • 对于多个嵌套的子组件,您可能会考虑使用“ panel ”这样的自定义UI元素作为“容器”。

  • 一系列编译错误。这些错误循环:它们“解决”,然后“重新出现”。
  • 我关闭了Dart编辑器[1.2.0-release],Dart SDK [1.2.0]并重新启动 - 问题仍然存在。
  • ' 错误 '以聚合物 viz 为中心。
 Target of URI does not exist: 'package:../polymer/polymer.dart'
 Annotation can be only constant variable or constant constructor invocation
 Classes can only extend other classes
 Annotation can be only constant variable or constant constructor invocation
  • 我认为没有找到'聚合物'是一种症状。 Dart编辑器循环:找到< - > not_find

这种行为的原因似乎是我移动了两个文件:

  1. tute_stopwatch.html和
  2. tute_stopwatch.dart ...
  3. 进入[sub - ] components / 文件夹,如图所示(上面)。该错误源于文件中聚合物的导入:

    • 组件/的 tute_stopwatch .dart

    代码如下(Dart构建错误作为注释):

    import 'package:polymer/polymer.dart';
    
    @CustomTag('tute-stopwatch')                  // <-- Target of URI does not exist: 'package:polymer/polymer.dart'
    class TuteStopwatch extends PolymerElement {  // <-- Annotation can be only constant variable or constant constructor invocation
      @observable String counter='00:00';         // <-- Classes can only extend other classes
                                                  //     Undefined class 'PolymerElement'
      TuteStopwatch.created() : super.created();
    
        :
    } // TutStopwatch class
    

    要指出的一点是,Dart编辑器会在每个子文件夹中为 packages / 文件夹创建一个Windows Junction link。那将是Linux或Mac上的symlink。所以包文件路径应该运行正常。

    我正在寻找一种策略来获得我想要的东西?在开发中使用Dart和Dart编辑器创建不同模块的子文件夹或“功能”?在此先感谢... / w


    v02 ... Added code for import polymer error.
    v01 ... Original query.
    

2 个答案:

答案 0 :(得分:0)

我已经解决了我相信的问题。我希望那些找到更好的方法的人也会发布更好的替代方案 cul de sac 。这个'解决方案'(?)非常复杂,虽然应用程序运行正常(如编写的那样)但我仍然在Dart Editor 问题标签中有错误。< / p>

至少我知道这会产生一个根据我正在阅读的代码工作的应用程序。我不认为我的行语法错误:

import 'package:polymer/polymer.dart';

demo code有效且Dart Editor报告错误。所以是的,我同意,“消息毫无意义”并且它们是错误的;因为代码运行得很好,有一些独特的测试值(见下文)。所以imho, Dart编辑器有一个 问题 。如果有人可以确认这一点,我们可以报告错误。

我摆脱这个问题的方式是:

  1. 关闭 Dart编辑器
  2. 删除构建/ 目录
  3. 重新启动 Dart编辑器
  4. 运行您的应用。
  5. 为了进行测试,我对'组件'文件做了更改,以确保旧版本中没有任何内容产生副作用(例如:Define a Custom Element)。

    • tut_stopwatch.html ...更改了颜色。
    • tut_stopwatch.dart ...更改了计时器增量。

    Volia! 演示秒表嵌入式组件使用'粉色'颜色和' 3秒 '增量。

    我想用这个问题交叉链接:

    在中等规模和较大规模的项目中,除了 clean 命令之外,还有更多地保持依赖关系和交互。我认为一些可见性和对构建的更好控制将是一种改进。

    我有ZIP-ped这个练习的项目文件夹。如果有人想要副本,我可以通过电子邮件发送。语法方面我没有修改演示代码,除了修复“:host”错误。我刚刚将2个x文件移动到 components / 文件夹。

    aloha

答案 1 :(得分:0)

评论太长,所以我将其发布为答案:

我读了你的答案,但这没有多大意义 几个月以来我一直与Dart一起工作(大部分时间都是聚合物),我没有看到类似的东西。

如果DartEditor显示奇怪的错误消息,您可以执行的操作是在DartEditor的应用程序目录的上下文菜单中执行'重新分析源'。
如果这不会更改错误,则错误会出现在您的代码中。

我以前从未见过,构建目录会影响您的Web目录中的错误。

Dart非常宽容,因此当DartEditor显示错误/警告/提示时应用程序运行并不奇怪,因为在DartEditor中运行的分析器不是。