【问题标题】:How do I import a library from the lib folder in my web app?如何从我的 Web 应用程序的 lib 文件夹中导入库?
【发布时间】:2014-10-14 02:45:09
【问题描述】:

我的文件夹结构如下:

lib\
    my_library.dart
web\
    index.html
    main.dart
pubspec.yaml

main.dart 中,我目前正在通过以下方式导入my_library.dart(顶部有library my_library):

import '../lib/my_library.dart';

这很好用。但是,拥有这种相对路径感觉有点脆弱。我在Pub Package Layout Conventions 中读到我可能可以使用import 'package:blah';它说:

当您使用自己包中的库时,即使是 src 中的代码,您仍然可以(并且应该)使用“package:”来导入它们

所以,我尝试将我的代码更改为:

import 'package:my_library.dart';

但是,在 Chrome 开发编辑器中,我得到:

目标或 URI 不存在:'package:grid_data.dart'

在 Dartium 中我得到:

GET http://127.0.0.1:51792/MyProject/web/packages/my_library.dart 404(未找到)

从我的项目中的其他 dart 文件中导入 lib 文件夹中的内容的正确方法是什么?

【问题讨论】:

    标签: dart dart-pub


    【解决方案1】:

    你缺少包名

    import 'package:my_project/my_library.dart';
    

    导入语句中的package: 部分引用了my_project 包中的包文件夹(包含pubspec.yaml 的文件夹。导入语句的其余部分是您要导入的文件的路径。 您可以在 DartEditor 或文件管理器中浏览此包文件夹中的文件夹和文件,以查看文件的确切组织方式。
    此文件夹还包含一个名为 my_project 的符号链接,它指向您的 my_project/lib 文件夹。

    【讨论】:

    • 噢!现在我看包似乎有点明显:)
    • 您应该知道这在 HTML 中的工作方式不同。没有package:。您需要导航到包顶部文件夹,然后向下浏览 packages 文件夹。来自web/index.html 这将是../packages/my_project/my_library.css(不要将package:package*s*/ 混合使用
    • 是的;这是有道理的(因为一个是浏览器解释的路径,另一个是 Dart 导入的东西!)
    • Dart 在构建时解析(发布服务/发布构建),HTML 由浏览器解析。
    猜你喜欢
    • 2013-01-08
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多