从包中通过链接标记导入组件的最佳方法是什么?

时间:2013-04-25 04:31:11

标签: package dart packages dart-webui link-tag

目前,我通过相对路径从包中导入组件:

<link rel="components" href="packages/packageA/components/login.html">

然而,当我开始嵌套包时,这不再适用。我设置了一个小例子,可以在这里找到:https://github.com/nikgraf/nesting-components

当我尝试构建包应用时,我收到以下错误消息:

error web/packages/packageA/components/login.html:6:5: exception while reading file         "web/packages/packageA/components/packages/packageB/components/button.html", original message:
 FileIOException: Cannot open file 'web/packages/packageA/components/packages/packageB/components/button.html' (OS      Error: No such file or directory, errno = 2)
    <link rel="components" href="packages/packageB/components/button.html">
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning web/packages/packageA/components/login.html:12:7: custom element with tag name button not found.
      <div is="button"></div>
      ^^^^^^^^^^^^^^^^^     

目前的结构:

应用 - 依赖:PackageA

程序包A - 依赖:PackageB

一些可能有用的背景信息: 我的应用程序包含来自包A的x-login组件,我们构建的几个Dart应用程序使用它。 x-login组件和通用包A包含我们的应用程序的特定代码。 x-login应该能够使用包B中的x-button组件。包B是一个包含我们想要发布的通用组件的包。

对于以不同方式构建我的应用程序或如何以更好的方式导入组件,您有什么建议吗?

1 个答案:

答案 0 :(得分:3)

为您的实用程序组件提供单独的包,然后为特定于域的组件提供一个好主意。

在不包含相对路径的情况下,可以使用“package:packageA”样式语法。

<link rel="import" href="package:packageA/components/login.html">

只要你的pubspec知道packageA在哪里,你应该没问题。这意味着当您将包依赖的路径更改为git或pub url时,它仍然可以工作。

Pub Package Manager Dependencies doc.