2

私は初心者の AngularJS ユーザーです。現在、ハードコーディングされた JSON (バックエンドとサーバー データの準備ができていません) を取得しようとしています。たとえば、非常に一般的な ng-repeat を使用する場合など、データをプルするには、データベース構造を知る必要があるようです (レンダリングされた JSON はその構造を反映するためですよね?)。

バックエンドとは独立してコーディングできますが、データベース構造を知っている必要があるという私の仮定は正しいでしょうか? たとえば、ユーザーのコメント データを取得したい場合があります。これは独自のデータベースにある可能性があり、これを行う可能性があります: ng-repeat='comment in comments' およびデータベースの各コメント エントリ内の特定のユーザーをフィルター処理します。一方、コメントがユーザー テーブル内にのみある場合は、ng-repeat='comment in user[0].comments' になります。前者が正しいアプローチだと思いますが、正直なところ、適切なデータベース構造について学んだことはありません。ただし、AngularJS を適切に実装するために知っておく必要があるようです。

どんな助けでも大歓迎です。私は本当に物事に適切にアプローチすることを確認したい. ありがとう!

4

1 に答える 1

2

データベース構造を知る必要はないと思います (または知っておくべきではありません)。AngularJS は MVC フレームワークです。このアーキテクチャの基本原則は、関心の分離です。簡単に言えば、物事を混ぜてはいけませんが、より具体的には、2 つのシステム間の通信について話しているのです。ローカル システム (angularJS を実行しているブラウザー) とリモート システム (同じである場合とそうでない場合があるサーバー) です。 angularファイルをクライアントに提供しました)

たとえば、ビューがデータベースにアクセスするべきではありません (たとえば、PHP を使用している場合はmysql_query(...)、ビュー内にそのようなものがあってはなりません)。

また、コンポーネントは疎結合になるように設計する必要があります。可能な限り独立させてください。単体テストはそのように考えるのに役立ち、AngularJS はカルマを使用して特に単体テストに適しています。この原則に従って、twitter API を使用して angularJS アプリケーションでツイートを表示するとどうなるでしょうか? Twitterの内部について知る必要はありません。この JSON を使用できる形式で提供する API があります。バックエンドはこれを提供する必要があり (たとえば、ファサード コントローラーを使用)、どのデータが利用可能になるかについてバックエンド チームと合意する必要があります。

設計をデータベース構造に依存させるのではなく、バックエンド API を要件に依存させます。このようにして、2 つのシステムが疎結合され、バックエンド チームはあなたに影響を与えずに好きなことを行うことができます。たとえば、DBMS やテーブルの構造を変更します。

コメントをプルしたい場合、サービス$httpまたはng-resourceコントローラ。サーバーは、これを表す json ファイルで応答します (おそらく、プロフィール写真の URL、ユーザー ID など、すぐに必要になるものもいくつかあります)。次に、ビューに公開するデータ (サーバーから取得したもののサブセット) を に配置し$scopeます。

于 2013-06-02T14:25:06.960 に答える