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

残念だけど違う。これに対処するオープンな機能リクエストがありますが、実装には時間がかかる場合があります。これを回避する最善の方法は、複数のクラスを 1 つのファイルにバンドルするか、複数のファイルをライブラリにバンドルすることです。インポート ステートメントの数を効果的に減らします。part ofimport ステートメントを扱う必要がないように、アプリケーション全体をステートメントを含む 1 つの大きなライブラリにするところまで行きました。これで根本的な問題が解消されるわけではありませんが、今のところ問題はありません。

また、フォルダー構造を変更するときに単に名前を変更する代わりにリファクタリングすると、影響を受けるインポート ステートメントが変更され、手動で調整する手間がなくなりました。

exportWeb コンポーネントをライブラリにインポートし、ステートメントを使用して再エクスポートするだけで、それらを 1 つのインポートにまとめることができます。

于 2013-04-22T13:13:20.167 に答える