web-dev-qa-db-ja.com

大規模なフロントエンド構造Djangoプロジェクト

数日前、新しい会社で働き始めました。私の前では、すべてのフロントエンドとバックエンドのコードは1人の人によって書かれていました。

ご存知のように、Djangoアプリには、フロントエンド用の2つのメインディレクトリが含まれています。/static-静的(パブリック)ファイル用と/ templates-Djangoテンプレート用

現在、大規模なアプリケーションがあり、ホーム、管理者、スパネル、モバイルなど、10以上の異なるモジュールがあります。

これはファイルとディレクトリの現在の構造です:

最初-/ staticディレクトリ。あなたが見ることができるように、それはいくつかの名前のようなモジュールとの混合ディレクトリであり、いくつかはグローバルライブラリを含んでいます。

static dir

もう一つ:

static dir second

SECOND-/ templatesディレクトリ。混合テンプレートを含むモジュールのような名前のディレクトリ、新しいバージョンに依存するディレクトリ=)、モジュールでのみ使用されるがグローバルに配置されるディレクトリ.

templates dir

もっと:

templates dir 2

これは、醜く、維持できない、ストレスのかかる構造だと思います!

ある程度の時間を費やした後、モジュール構造に基づいたこのスキームを使用することをお勧めします。

enter image description here

最初に、プロジェクトの完全なバックアップを保存するために使用されるバージョンディレクトリがあります。
プロジェクトの本番バージョン。

古いバージョンまたは新しいバージョンのファイルにすばやく簡単にアクセスできるので、それは正しいと思います。また、異なるバージョン間の壊れた、または間違った依存関係から救われます。

次に、すべてのバージョンにスタンドアロンモジュールとグローバルモジュールがあります。

すべてのモジュールには、独自の/ staticおよび/ templatesディレクトリが含まれています。この構造は、すべてのモジュールが独自のjsアプリ、cssテーブル、ローカルイメージを持っているため、異なるモジュール間の壊れた、または間違った依存関係を回避するために使用されていました。

グローバルモジュールには、すべてのライブラリ、メインスタイルシート、ロゴやファビコンなどの画像が含まれています。

この構造は、保守、更新、リファクタリングなどにはるかに優れていると思います。

私の質問は:

このスキームは現在よりも優れていると思いますか?このスキームは生きられますか、それともDjangoアプリに実装することは不可能ですか?

6
Saike

私には醜く見えるポイント:

  1. なぜ バージョン管理システム でないのですか?ローカルファイルシステムにバージョンを保持することは、あまり良くありません。バージョン管理システムを使用して、サードパーティのjavascript/cssライブラリを追加することもできるため、追加/削除/置換されたjavascriptおよびcssファイルを追跡できます。リビジョン間を行き来して、違いを簡単に確認できます。
  2. モジュールが同じサードパーティソフトウェアの異なるバージョンを必要とするソフトウェアを開発するのは困難です。 adminモジュールがjQuery Xを必要とするのに対し、製品モジュールはjQuery Yを必要とする場合、問題があります。保守が難しく、各モジュールがjQuery Xの特定のバージョンを必要とする理由と、jQuery Yで実行できない理由を知っているのはあなただけです。ローカルドライブに各展開の完全なコピーがあるので、A moduleが特定のbootstrapバージョンを必要とする理由。特定の異なるjs/cssファイルの場合単一のモジュールにするには、各アプリケーションの下に静的ディレクトリを作成し、アプリケーション固有のファイルをここに配置できます この投稿を参照として参照
  3. Djangoはよく計画されたテンプレート構造を持っています。静的ファイルに対して行ったのと同じことができます。各アプリケーションの下にtemplatesディレクトリがあり、アプリケーション固有のテンプレートをここに配置できます。
  4. アプリケーション固有のtemplatesおよびstaticディレクトリを作成するかどうかは、開発者次第です。同じディレクトリにあるすべてのファイルが見苦しい場合は、アプリケーション固有のソリューションを選択できます。 Djangoは両方をうまく処理します。特にたくさんのアプリケーションがある場合、すべての場合に名前の共謀があるかもしれませんテンプレートと静的ファイルの同じディレクトリの下にあります。

現在の形式は古い形式よりもはるかに優れています。しかし、Django docsをチェックし、同様の状況と解決策についてSO /プログラマーをチェックすると、より良いアイデアが得られると確信しています。

2
FallenAngel

「モジュール」とは、アプリのことですか? Djangoには、ファイルを配置するためのかなり標準的な構造がすでにあります。

その構造の使用を検討することをお勧めします。一つには、あなたが得るであろうほとんどすべての助けがこの構造を持つ例を持っているでしょう。

あなたの構造については、私にはかなり広大に見えます。それはあなた次第です。特にそれがビジネスの問題に当てはまる場合、ナビゲートに問題はありません。

2
Carlos