【问题标题】:How do I use custom Dart libraries in Polymer?如何在 Polymer 中使用自定义 Dart 库?
【发布时间】:2013-12-22 06:01:45
【问题描述】:

我已经像这样创建了我的库:

// web/com/jessewarden/workoutlogger/workoutloggerlib.dart
library workoutloggerlib;

import 'dart:async';
import 'dart:html';
import 'package:polymer/polymer.dart';

part "types/WorkoutTypes.dart";

part "vo/Exercise.dart";
part "vo/Set.dart";
part "vo/Workout.dart";

part "views/SetView.dart";
part "views/SetView.html";

我的 SetView.dart:

part of workoutloggerlib;

@CustomTag('set-view')
class SetView extends PolymerElement
{

    @published
    Set set;

    SetView.created() : super.created();
}

它是相关的 HTML:

<polymer-element name="set-vew" attributes="count">
  <template>
    <div>
        <h3>{{set.name}}</h3>
        <span class="label label-primary">Goal</span>
        <div class="input-group">
            <span class="input-group-addon">Reps</span>
            <input type="text" class="form-control disabled" value={{set.goalReps}}>
        </div>
        <div class="input-group">
            <span class="input-group-addon">Weight</span>
            <input type="text" class="form-control" value="{{set.goalWeight}}">
            <span class="input-group-addon">lbs</span>
        </div>
    </div>
  </template>
  <script type="application/dart" src="SetView.dart"></script>
</polymer-element>

但是,当她编译时,运行时我得到:

'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^: http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^

如果我为每个文件手动导入类,放弃我的库,它工作正常。显然这是不希望的,因为代码无法以这种方式管理,具有更紧密的依赖关系,并且更难重构。

【问题讨论】:

    标签: dart dart-polymer


    【解决方案1】:

    我不确定这是否仍然有效,但我读到最好让每个组件都成为自己的库(库不是包 - 您可以在一个包中拥有尽可能多的库)。 我总是这样做,我从来没有遇到过问题。 你可以看看看看一些例子

    值得一提的是,我们必须使用一个单独的包来符号链接示例页面。

    目前无法在示例目录(仅限 web)中构建页面,并且无法在 web 中拥有页面和 lib 中的元素(在同一个包中),因为必要的聚合物转换器设置冲突)。 要么你在 web 中也有元素,要么你在 lib 中有元素,并且在 web 中它们自己的包中有页面,然后将包与 lib 中的元素一起导入。

    您有一个错字 - 可能只是在您粘贴的代码中 - 但无论如何

    <!-- should be name="set-view" -->
    <polymer-element name="set-vew" attributes="count">
    

    【讨论】:

    • 听起来我必须将我的聚合物“视图”与我的核心代码分开,因为我共享大量的类并且不能在每个类中复制导入,这只是笨重。 Google+ 上的 Nick Floros 建议我在这里查看示例 github.com/sethladd/dart-polymer-dart-examples,其中有许多使用库的聚合物小型应用程序。正在尝试...
    • 您可以创建一个库文件来导出其他几个库,就像我在 polymer_elements.dart 中所做的那样,然后导入这个库而不是这个文件中列出的每个库。
    • 如果我更改 SetView.html 中的第一行:workoutloggerlib 的一部分;到:导入“包:聚合物/聚合物.dart”;导入'../workoutloggerlib.dart';然后它工作。请注意,即使它包含在我的库中,我仍然必须导入 polymer.dart 文件。我还必须从库中删除所有与 Polymer dart 和 html 相关的类。不知道为什么我必须再次导入聚合物类,但至少我所有的聚合物飞镖文件现在只有 2 个导入,这很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2013-12-14
    • 2016-03-10
    相关资源
    最近更新 更多