web-dev-qa-db-ja.com

最新のWebアプリケーションを構築する方法

バックグラウンド

私は最近、2つの異なるプロジェクト用に、2つのWebアプリケーションを開発しました。 2つはまったく異なるアプローチに従いました。最初のものはクラシックなインベントリアプリケーション(表示、選択、編集するもののリスト、非常にCRUD)で、RazorとASP.NET MVCで開発されました:リクエストを受け入れるコントローラー、リポジトリー経由でモデルを取得する、それを表示および編集するには、Viewmodelをビューエンジンに渡し、ページをレンダリングします。

非常に直接的なもの(ASP.NET MVCのみを使用したウィザードでこのようなアプリケーションを構築できます)、Javascriptの "マジック"はほとんどありません(MVCフレームワークが提供する最小限の機能のみで、主に検証用です)。

2つ目はまったく異なりました。このアプリケーションは基本的にユーザーが前後にナビゲートできる一連の画面(ビュー)であり、ユーザーがさまざまな場所にデータを入力すると外観が変化します-基本的にユーザーが表示し、彼のアカウントにリンクされている情報を確認します。この2番目のアプリケーションは、RESTサービス(ServiceStackで構築されているため、データ転送オブジェクトのような設計パターンに従う)として構築され、AngularJSを使用して実装されたSPAアプリケーションです。angularアプリケーションは、その(優れた)httpサービスを使用して、残りのサービスからJSONオブジェクトを取得し、その(クライアント側)ビューモデル(スコープ)にデータを入力します。さまざまなアカウント情報(リスト、グラフなど、さまざまな方法で視覚化されます)

時にはコーディングが少し難しいかもしれません(認証/承認は少し難しいです(たとえば、クライアントとサーバーの制御を模倣するように注意する必要があります)。

今、私は3番目のプロジェクトを始めています。それは中間的なものです。それはまだCRUDアプリケーションですが、非常に応答性が必要です。たとえば、ページには、入力する複雑な情報(フォームとリストの組み合わせ)があります。リストでは、ユーザーは別のリストからアイテムを選択する必要がありますが、アイテムがそこにない場合は、「リストアイテムの編集」ビューを開き、アイテムを挿入して元のページに戻ります。 。すべて更新/プッシュバック/なし...あなたはアイデアを得ました。

質問

これを実現するための、モダンで迅速な応答性の高いWebアプリケーションを開発するための最良の方法はどれですか私はあまりにも多くの異なるアプローチを見てきました:

  • "コントロールベース"(jQuery)アプローチ:MVCフレームワーク(html、テーブルなどを生成します)を使用してページを構築し、jQueryを使用してhtmlを "強化"してajaxにします。
  • "data based"(Angular):ページをデータバインディングを使用してHTMLページとして作成し、JSアプリケーションを作成し、サーバー側をRESTサービスとして構成します。これは、JSアプリがget /投稿データ
  • ミックス#1:アプリの一部はMVCフレームワーク(htmlを吐き出す)を使用して構築され、一部はデータベースのフレームワーク(angularなど)を使用して構築されます。 Angularスコープ/モデルは、jQueryを使用して初期化され、html DOMから初期データを抽出します。
  • ミックス#2:アプリの一部はMVCフレームワーク(htmlを出力する)を使用して構築され、一部はデータベースのフレームワーク(angularなど)を使用して構築されます。 HTMLに加えて、サーバーはJSONデータである「スクリプト」を書き込み、それをページに埋め込みます。 Angular次に、それをモデルとして使用してデータの視覚化をレンダリングします(クライアント側)
  • ミックス#3:同じですが、今回は埋め込まれたJSONはありません:サーバーはRESTサービスが公開しており、Angularが必要なデータを取得するために使用しています。基本的にサーバー上で生成され、クライアント上でsecon呼び出しを介してJSONオブジェクトを取得します。
  • (もっと...?)

私は個人的に#1と#2の組み合わせを醜く見つけますが、私は現代のJavascript開発にとって「新しい」ので判断できません。彼らは一般的ですか?たとえば、ミックス1の利点の1つは、最初のビューをすぐに取得できることです。JSがそれをレンダリングするのを待つ必要はありません。そして、#1と#2の両方がサーバーへの呼び出しを1つだけ実行します。

それで、どれがベストプラクティスですか?それとも私は本当に避けるべきですか?私は(個人的に)サーバー側で生成されたページとクライアント側のJSの組み合わせに慣れています。サービスを完全に使用してSPAを作成するのはそれほど簡単ではありませんでした。サーバー側のロジックを使用して何かを生成したいと思ったことが2回以上ありましたが、間違っている可能性があります(そのため、私は質問しています)。

7

あなたの質問は非常に意見に基づいた回答を返します。そのため、使用するフレームワークまたはオプションに関して、できる限り中立的な回答をしようとしています。

あなたが指摘したことはすべて、リストされているすべてのテクノロジーと同様に、かなり現代的だと思います。 jQueryとAngularJは私が推測するほど古いものではありません。

また、あなたはすでにあなた自身の質問に答えたと思います。私の発話を詳細に説明しましょう:

言及されている3つのプラクティスのうち、2は好きではないため、実際に残るのは1つのミックスだけです。

私は個人的にミックス#1と#2を醜く見つけました

他の人の意見に頼るのではなく、今のところ自分が満足しているものだけに進んでみませんか。あなたは自分が何をしているのかを知っていて、自分の分野の新たな展開に心を開いているように見えるので、なぜ他の人が今何を考えているのか心配する必要があります。あなたの質問は私が何か新しいものを発見するのに役立ちました。そのためのTHX。お役に立てば幸いです。

もともとコメントは長すぎて1つにはなりませんでした。

3
Ben McDougall

これは私がかつて考えた質問であり、それ以来、私はすべてではないにしても、多くのフレームワークとその組み合わせに取り組む機会がありました。今日、次のアプリケーションをどのように計画すべきかについてもう一度考えたとき、心に留めておかなければならないことが1つだけあります。それは、「アルゴリズムを単純に保つ」ということです。何を開発し、どのようなコードを記述しても、基本的に、ロジックやアルゴリズムを実装しています。そして、私の経験では、アプリケーションにはロジックが非常に単純であればバグが少ないがあります。

web applicationsのコンテキストで、これらの種類のアプリケーションの性質、開発したい機能、手元にある時間を理解すると役立ちます。したがって、Webアプリケーションの場合、その性質はclient/serverアプリケーションでなければなりません。おそらく、それはサーバーにデータを保存するであり、世界の他の部分でユーザーによって操作されています。 サーバー上の任意のフレームワークを使用。同時に迅速かつ信頼できるである必要があります。したがって、いくつかのjavascriptおよびajaxを追加して、一般的に使用される関数にアクセスしやすくする必要があります。次に質問が来ます必要な機能は何ですか? emails/messages/user's listなどのようにser dataがたくさんある場合は、javascriptアプリケーションで使用されるWebサービスを作成することをお勧めします(角度?)使いやすさを提供します。それとも会社データのあるWebサイトであり、注文履歴などのユーザーデータの少しの場合、サーバーが処理するほとんどのロジックとJavaScriptがアニメーションやajaxなどの最小限の機能のみを提供します...(jquery?)

最後に、このアプリケーションに投資することを覚えておくことも重要です取得した時間時間の短縮の場合、コンテンツ管理システムを使用できます。これはデプロイをすばやく完了できますが、アプリケーションの機能のより細かい制御の場合は、 frameworkを使用すると、開発とテストに時間がかかります。

1
Amit Kriplani