3

大規模な Web プロジェクトがあり、さまざまなプロジェクトのコンポーネントの中央リポジトリに配置できる、相互に通信できるコンポーネントが必要です。モジュール開発には reuirejs と Backbone を使用します。バックボーンとrequirejsで利用可能なさまざまな定型文を試しましたが、私の要件に一致するものはありませんでした。そのため、次のディレクトリ構造を作成しました。それは次のように説明できます。

---resources
 |---custom-components
   |---mycomponent
     |---js
       |---views
       |---models
       |---collections
     |---css
     |---templates
     |---mycomponent.js
   |---mycomponent2
     |---js
       |---views
       |---models
       |---collections
     |---css
     |---templates
     |---mycomponent2.js
 |---libraries
   |---backbone
   |---underscore
   |---jquery
   |---jquery-ui
 |---jqueryplugins
   |---jcarouselite
 |---thirdpartyplugins
 |---page-js
   |---mypage.js
   |---mypage2.js
  1. resources ディレクトリにはすべてのリソースが含まれます。その下には、前述のように 4 つのディレクトリがあります。
  2. libraries、jqueryplugins、および thirdpartyplugins は、明らかに、それらが言う名前のディレクトリです。
  3. page-js ディレクトリには、html ファイル内で requirejs data-main 属性として使用される実際の main-js が含まれます。
  4. Custom-component は、私たちが作成したすべてのウィジェットが存在する場所です。コンポーネントと同じ名前の js ファイルがあり、このウィジェットのエントリ ポイントになります。このディレクトリには、js、css、およびテンプレートのディレクトリもあります。CSS とテンプレートは、それぞれテキスト プラグインとCSSプラグインによって読み込まれます。Js ディレクトリには、このウィジェットを機能させるためのすべてのバックボーン コードが含まれます。

カスタム コンポーネントは、page-js にある main-js によって要求されます。

私が必要なものに来ます。
1. ウィジェットを他のチームと共有する必要がある大規模な Web プロジェクトの観点から、このディレクトリ構造を専門家に確認してもらいたいと思います。提案は大歓迎です。
2. 各カスタムコンポーネントは、パッケージ構造内だけでなくパッケージ構造外にも依存するモジュールを定義します。r.js を使用して、パッケージ構造内のカスタム ウィジェットの依存関係のみを最適化し、プラグインとライブラリを個別に最適化する方法があるかどうかを知りたいです。
3. 単一ページの ajax アプリケーションを開発しているので、必要に応じてモジュールを要求するので、不要なモジュールとウィジェットをクリーンアップする必要があります。注意すべきクリーンアップ方法はありますか?

4

2 に答える 2

2

ディレクトリ構造について

ディレクトリ構造のパターンとして、cakePHPのディレクトリ構造を使用することを強くお勧めします。言葉のように本当に頑強です!! 私は複数のアプリを実行しています(そのうちの1つはGrouponと同じくらい大きいです)、それはまるで魅力のように機能します。
ケーキはPHPフレームワークであり、あなたのケーキはjavascriptフレームワークであるため、少し調整する必要があるかもしれません。

ケーキの素晴らしいMVCディレクトリ構造は次のとおりです。

ここに画像の説明を入力してください

1回のケーキインストールで数千のアプリをホストできることに注意してください。興味があれば、何を待っていますか?彼らのサイトに行き、彼らのドキュメントを読んでください。


清掃技術について

さて、ここに私が好きではないJavascriptの欠点の1つがあります。JavaやC++のようにOOモジュールを破棄する実際の方法はありません。~ここには、C++のデストラクタのようなものはありません。

長年にわたり、プログラマーはmodule = null未使用のコードからメモリを解放するために使用します。

これらも見てください:

それがあなたのアプリの設計に役立ち、幸運を祈っています; D

于 2012-06-11T19:01:31.677 に答える
1

おそらく私はこれに答えるのが遅れていますが、他の誰かが役に立つと思った場合に備えて、ここで私の見解を共有させてください.

  1. ディレクトリ構造は問題ないようです。ビジネス コンポーネントを特定のディレクトリに格納しておく方が、常に優れた設計です。Open Close Principleを破るCake MVC構造はお勧めしません。大規模な JavaScript 開発のリファレンス アーキテクチャであるhttp://boilerplatejs.orgが推奨するディレクトリ構造も参照してください。

  2. 質問がよくわかりません。r.js が実行されると、ディレクトリ内で見つかったすべての JS ファイルが最適化され (可能な限り除外されます)、依存関係ツリーを調べて単一のスクリプトが作成されます。本番環境では、その単一のスクリプトのみが必要です (i18n プラグインが使用されている場合は、ロケール ファイルも必要です)。

  3. 以下の私のブログ記事を読んでください。ヒントが得られるかもしれません: http://blog.hasith.net/2012/11/how-much-multi-page-single-page.html

于 2012-12-26T08:51:09.600 に答える