5

根据包布局约定,该web文件夹应包含以下内容:

HTML、CSS、图像,甚至可能还有一些 JavaScript。所有这些都进入你的包的 web 目录。您可以随意组织其中的内容。如果这让你开心的话,就疯狂地使用子目录。

所以我的web目录看起来像这样:

web/data_access
web/model
web/ui
web/ui/navigation
etc.

现在,我如何管理所有这些导入语句。我得到很多陈述,例如:

import '../../model/my_model.dart';
import '../../data_access/mock_dao.dart';
etc.

我不喜欢../在我的导入中使用那么多,因为这很脆弱,每当我更改文件夹结构中的任何内容时都会遇到问题。

有没有更好的方法来组织web文件夹内的代码?

或者

还有其他方法可以进行导入吗?

4

2 回答 2

4

我将几乎所有应用程序的代码都放入 lib 中,以避免您遇到的问题。这甚至适用于 Web 组件。

从 widget.dart 查看这个组件:https ://github.com/kevmoo/widget.dart/tree/master/lib/components

我通常只将 app.dart 放入 web/,它只是从 lib 中拉入库并初始化应用程序。

请参阅此应用程序示例,该应用程序拉入具有组件的 pub 包:https ://github.com/sethladd/catpic-app

这就是我的 HTML 文件的样子。注意路径中包含的包:

<!DOCTYPE html>
<html>
<head>
  <title>Your life is complete</title>
  <link rel="components" href="packages/catpic/components/cat_pic.html">
  <link rel="components" href="packages/frame/components/frame.html">
  <link rel="stylesheet" href="styles.css">
</head> 
于 2013-04-22T21:57:32.353 回答
3

很不幸的是,不行。有一个开放的功能请求解决了这个问题,但实现它可能需要一段时间。解决此问题的最佳方法是将多个类捆绑到一个文件中,或者将多个文件捆绑到一个库中——有效地减少导入语句的数量。我什至使我的整个应用程序成为一个带有part of语句的大型库,这样我就不必处理导入语句。虽然这并不能消除潜在的问题,但它现在有效。

此外,在更改文件夹结构时重构而不是简单地重命名会影响导入语句,从而消除手动调整它们的痛苦。

可以将 Web 组件导入到库中,然后使用语句重新导出export,从而将它们捆绑到单个导入中。

于 2013-04-22T13:13:20.167 回答