web-dev-qa-db-ja.com

2つの異なるフレームワークを使用したWebアプリケーションの設計

私はウェブ開発に比較的慣れていないので、誰かが「バックエンドにDjangoを使用し、フロントエンドにJavaScriptフレームワークを使用した」と言ったときの意味を理解したいと思いました。

私が間違っている場合は修正してください。私の理解は、彼らがすべてのサーバー側コードを作成していること、つまりデータベースを処理し、複雑なビジネスロジックを記述し、python Djangoフレームワークを使用してAngularJSなどのMVCを使用し、JavaScriptを使用してサーバーへのAPI呼び出しを行っていますか?(Pythonによって公開されたAPI)

また、私は私の仮定に正しいです。知りたかった

1)なぜ誰かが2つの異なるフレームワークを使用するのですか? Djangoは、フロントエンドとバックエンドの両方を実行できます。利点と欠点は何ですか。制限はありますか?

2)これは意味ですか? 2つのフレームワーク間のすべての通信はAPI/RPC呼び出しに依存していますか?

PS;これは私が読んだものですが、他のいくつかの場所でも同じように読んだことがあります

/ * "私たちのクライアント側のアプリはかなり洗練されたJavaScriptフレームワークに基づいて構築されており、jQuery、React、Fluxおよびすべての通常の容疑者を利用しています。サーバー側はPython Djangoでは、 MySQLデータベースを使用します。リアルタイムコンポーネントにはNode.jsとSockJSを使用します。システムはすべてAmazon Web Servicesで実行されます。

あなたは私たちの主力のWebアプリケーションに関連する様々なプロジェクトに取り組むことになります。これらには、フロントエンドMVCアプリケーションの設計と開発、DOM最適化、モジュール式で拡張可能なHTML/CSSが含まれます。バックエンド開発に関しては、Djangoアプリケーションで作業し、高速なAP​​Iを作成するREST APIs。 "* /

5
Hassan Ahmed

「フレームワーク」は総称です。

Djangoは、Python上に構築されたWeb開発フレームワークです。 Webサイトを作成するために一般的に必要なツールを提供します。データベースレイヤーへの接続、開発サーバーの実行、ビューのレンダリング、正しいコントローラーへのリクエストのルーティングなどのツールはすべて、フレームワークによって提供されます。

Railsも同様のフレームワークで、Ruby上に構築されています。理論的には、フレームワークなしでPythonまたはRubyだけでWebアプリを作成できますが、これらのツールをすべてゼロから再構築するのは面倒です。

Angularは、標準化されたデータ構造からインタラクティブなHTMLビューを作成するためのフロントエンドフレームワークです。ホームページの 'wiring up the backend' に関するセクションをご覧ください。 Angularには、Cookieやローカルストレージへの保存などの基本的なJavaScriptツールを超えてデータを「保存」する方法がありません。そのためのバックエンドシステムが必要です。コード構成( "MVC"など)を記述するために同じ言語の一部を使用していますが、同じツールを提供していません。

フロントエンドフレームワークはバックエンドフレームワークと同じことをしません。実際、あるフロントエンドフレームワークが別のフロントエンドフレームワークと同じことをしない場合があります。


Web開発者は、「フロントエンド」フレームワークと「バックエンド」フレームワークを使用して、ユーザーとの2つの異なるタイプの対話を処理します。

Djangoはフロントエンドとバックエンドの両方を実行できます。

Djangoの機能を劇的に誤解しない限り、モーダルポップアップやライブ編集などの動的なページ内対話を作成することはできません。HTMLをレンダリングできます。ただし、テキストボックスに入力したテキストを同時にページに表示することはできません。

Django、Rails、Symphonyなどのバックエンドフレームワークは、べき等のブラウザー要求とHTTP呼び出しを処理するために使用されます。ページをロードすると、フレームワークが要求したURLを検査し、ページ全体を1つずつ構築して、全体をブラウザに返します。 (APIも)

これにはいくつかの例外がありますが、一般に、インターネットを「ナビゲート」すると、「バックエンド」システムがそれらの要求を処理します。 URLの変更が表示され、ブラウザウィンドウ全体が一瞬真っ白になる場合、それがこのタイプのナビゲーションです。

「フロントエンド」フレームワークは、ページはめ込みユーザーインタラクションの処理にとってより重要です。モーダルポップアップ、新しいページを読み込まずにAJAXを介して追加のデータを読み込む、フォームを送信する、リダイレクトせずにメッセージを表示する、ホバー効果など。

使用できる最も単純なフロントエンドフレームワークは、HTMLとCSSだけです。より複雑な相互作用が必要な場合は、それらのツールにJavaScriptを追加できます。 JavaScriptが複雑であるか、一般的なパターンを再作成している場合は、そのアニメーションツールにjQueryを追加することができます。

アプリケーション全体を再実装している場合(特定のリンクをクリックするか、特定のアクションを実行すると、ページのコンテンツ全体が置き換えられる-「単一ページアプリ」)、AngularのようなJavaScriptフレームワークを使用できます。それらの相互作用を構築します。

フロントエンド専用のWebアプリケーションが表示されることはほとんどありません。ほぼすべてのWebサイトまたはアプリケーションには、ログイン、ページコンテンツ、コメント、製品データ、ユーザーが送信したコンテンツなど、なんらかの永続的なデータストレージが必要です。その後、バックエンドフレームワークは、データベースとディスク、およびフロントエンド間の通信レイヤーとして機能します。 JavascriptがすべてのテンプレートとHTMLを処理している間、データにアクセス/作成/編集するための単純なREST AP​​Iを提供するだけで実行できます。または、ページ全体を組み立てることができます。Javascriptは、アニメーションと時折のAjaxリクエストにのみ使用されます。

3
Jen