2012-09-16 3 views
6

私はバックボーンが新しく、私は現在のwebappプロジェクトをどのように構築するのかを理解するための少しの助けを求めています。私はサーバ用のモジュール式管理パネルを開発しています。パネルのすべての「ページ」は、コントローラー、モデル、ビューを含むパッケージ化された「モジュール」でなければなりません。Backbone.jsモジュラーセットアップ

パネルは、最初にロードされるメインレイアウトビューと基本的なナビゲーションで構成されます。ユーザーがナビゲーション上のリンクをクリックすると、ページがAJAX経由でレイアウトに読み込まれます。 (これが愚かであれば、私に教えてください理由はあります:))

他の人もこれらのページを開発しているので、モジュール化されているので、私はモデル、ビュー、コントローラ私はAJAXを介して読み込まれたページの中に表示されます。

バックボーンでこれを行うにはどうすればいいですか?

Backboneモデルなどを動的に拡張する方法と、ユーザーがページを離れたり、後で再訪するなどの管理方法について、特に不思議です。

バックボーンには何かできることがありますが、一緒に何かをハックする必要がありますか?私が行方不明のことをする良い方法はありますか?

答えて

2

あなたの考えは非常に正しいと思います。 UIコンポーネントをできるだけ自己完結型にします。 UIコンポーネントのベストプラクティスの詳細については、10 min videoをご覧ください。

JavaScriptアプリケーション開発のその他の重要な問題については、BoilerplateJS参照アーキテクチャを参照してください。これには、説明したサンプルアプリケーション(コンポーネントがアクティブ化されているメニュー)が含まれています。

あなたのUIコンポーネントの活性化のための私の推奨事項は、不活性化は、次のとおりです。

  • DOM要素を作成/削除しないでください。 DOMから削除しても要素がメモリ内に記憶されるので、hide/showで再利用してください。
  • クライアント側で「状態」情報を保持しないようにしてください。ユーザーがコンポーネントを再訪したときに、サーバーコールを使用してコンポーネントをリフレッシュし、次にそれを可視にします(サーバーを状態情報の単一の真理として使用します)。

詳細については、「BoilerplateJSサンプルコンポーネントの実装」を参照してください。私はBackboneJSでそれを使用する人はほとんどいません(現在はknockoutJSで出荷されています)。我々は週に予定されているv0.2のBackboneJSを使ってその例を出荷する予定です。ここで

+1

BoilerplateJSは良いことをやっているようですが、共有してくれてありがとう! –

+2

BoilerplateJSでは、BackboneJS for MVCを使用するサンプルコンポーネントを追加しました。サンプルのTODOコンポーネント(http://boilerplatejs.org/samples/productsuite/index.html#todo)をご覧ください。 GitHubでコミットされたコードを見つけることができます。 – Hasith

1

MarionetteまたはChaplinをご覧ください。どちらもバックボーンの上に構築され、バックボーンでより大きなアプリケーションを構築するための構造化された方法を提供します。

2

Backboneと一緒に使用される一般的なモジュラスクリプト読み込みフレームワークはrequire.jsです。それはあなたが探しているものかもしれません。 Require.jsは、すべてのAMDモジュール、非同期モジュールに関するものです。通常、各モデル、コレクション、ビューは、特定のモジュールが必要とするそれらのモジュールをロードする依存関係を定義する独自のモジュールです。特に、大規模なプロジェクトに適しています。そこでは、アプリケーションのさまざまなポイントで一緒にミッシュマッシュされる必要のある個所がたくさんあります。

もちろん、1つのモジュールで複数のバックボーン要素を組み合わせることができます(通常はビューとその親ビューでのみ使用される特定のサブビューを予約します)が、実際はあなた次第です。

バックボーンでは、通常、単一ページアプリケーションを作成することを意図しています。つまり、すべてのページスキャフォールディングは通常、1つのファイルとしてラップされ、get-goでクライアント側に完全にロードされます。各ページのデータは、ajaxを経由して呼び出され、ユーザーがアプリケーションのさまざまな側面をナビゲートして読み込むと、読み込まれます。これはあなたの説明で意図したものですか?

それぞれ別々にページを読み込んでサーバーから取得しようとしている場合は、バックボーンが答えであるかどうかわかりません。これを達成するのに役立つ他のサーバーサイドのMVCフレームワークがあります。

このようなことにBackboneがどのように使用されているかは、一般に触れられています。

バックボーンモデルを拡張する方法については、Backboneはアンダースコアを依存関係として使用し、アンダースコアは、あなたが望むどんな方法でもすべてのオブジェクトを簡単に拡張できる素敵な_.extend()関数を提供します。デフォルト機能を無効にし、ミックスインを投入すると、Backboneが実現する限り、かなり苦労します。フレームワークとして、バックボーンは非常にすべての小さなビットと作品を変更し、変更し、カスタマイズすることに同意しています。

Backbone.routerは、ユーザーがページにアクセスして再訪する際に、アプリ内の特定の「ページ」を指すだけでなく、実行する必要がある任意のコードを実行するためのURLを作成することができます。ログインしたユーザーが "mysite /#account"にアクセスすると、その特定のビューを表示する特定のスクリプトをロードするようにルーターが起動され、そのユーザーのビューを起動して実行するために必要なデータがfetch()必要になります。

そこから始めるための基本的な構造を提供するリソースがあるかどうかはわかりません。私が知っているほとんどの経験は、 "Todo List"のような基本的なチュートリアルを通り、そこから上に行く傾向があります。私はあなたの経験レベルがjavascriptやプログラミング全般にどのようなものかはわかりませんが、私はBackboneから始めて、本当にほとんど何も知りませんでした。 JSONの漠然とした考え方と、HTTPの低レベルな理解だけで、「Webページを取得するのはそれだけです」つまり、私はバックボーンが本当に簡単に始められたと思うし、クライアント側のRESTfulタイプのアプリ構造全体について多くの知識が深まっていると思う。

バックボーンやノックアウトなど、さまざまな種類の「Todo List」アプリがあります。フレームワークを決定するとき、私は基本的に、使用可能なすべてのフレームワークと、バックボーンを選択したコードを比較しました。なぜなら、それはちょうど私にとって最も理にかなっているようだったからです。私はそれを後悔しない。それは楽しいことだと私はそれに入るための最良の方法は、いくつかのデモチュートリアルを試してみることだと思います。

+0

この大規模な答えてくれてありがとうを使用したモジュールとしてアプリケーションを整理するためのチュートリアルです。 "サーバーごとに個別のページをロードする場合は、バックボーンがその答えであるかどうかわかりません。これを達成するために他のサーバー側のMVCフレームワークがあります。 上記のフレームワークを教えてください。 –

+0

私はこれらのほとんどを使用していないので、私はそれらを保証することはできませんが、このリストを調べて、いくつかのものをチェックすることができます[PHP MVC Frameworks](http://www.phpwact.org/php/mvc_frameworks) 。 CakePHPとCodeigniterはシンプルで使いやすいという評判を得ているようです。私はZendフレームワークの一部をフレームワークなしで使用していましたが、これは非常に幅広くよく考えられたライブラリを持っています。 – jmk2142