VueJSと.NETを使用してWebアプリケーションを作成します

この記事はこの記事の翻訳です。 その中で、ASP.NET MVCでアプリケーションを開発するときにVue.jsフレームワークを使用することがどれほど便利かを説明します。

画像



はじめに



過去数か月間、私はさまざまなJavaScriptフレームワークをMVCプロジェクトに統合することに注目してきました。 React、Angular、またはEmberの精神で.NETを操作するために何かを選択したらすぐに、アダプターモジュールをインストールし、すべてのコントローラーのすべてのルーティングロジックを書き換える必要があります。 最終的には、すでに動作しているスタックと並行して動作する場合、Webアプリケーション全体に影響します。 新しいプロジェクトを開始する場合は、バックエンドにWeb APIを使用することをお勧めします。これにより、選択したJSフレームワークにRESTインターフェイスが提供されますが、MVCの既存のプロジェクトにはこれはオプションではありません。



いくつかの調査の後、Vue.JSに出会い、いくつかの実験の後、MVCと連携して動作するようになりました。 Vue.JSは比較的軽量のフレームワークなので、追加のJS機能が必要なビューにそれを追加し、残りのWebアプリケーションはそのままにします。 現在、私が本番環境でVueを使用するとき、私の問題を共有しているすべての人のために、あなたといくつかの例を共有できてうれしいです。 私のワークフローは、 MigelのCastro [ tyk ]の概念を借用し、そこで彼がそれを使用してAngularJSとMVCを統合しました。



仕事を始める





ビューでvueを使用しましょう





明らかに、すべてのスクリプトをビューに配置することは頭痛の種になる保証された方法なので、コードを整理しましょう。



仕事を始める



VueJSで構築された大規模なアプリケーションがある場合、プロジェクトを部分に分割しました。 各コントローラーには、対応するVueアプリケーションがあります。これは、いくつかのVueコンポーネントで構成されています。 コントローラーとアプリケーションの間の1対1の関係により、コードが読みやすくなり、保守が容易になります。 各アプリケーションモジュールには、1つの大きなパッケージではなく、必要なJavaScriptライブラリのみが含まれます。



JavaScriptパッカーは長年にわたって改善されてきました。 Browserifyを使用すると、node.jsスタイルのモジュールを使用してブラウザーで動作できます。 依存関係を定義してから、Browserifyはそれらを1つの小さくてきれいなJavaScriptファイルに収集します。 require( "./ your_file.js")を使用してJavaScriptファイルを含めます 表現。 これにより、必要なライブラリのみを使用できます。 そのため、ここで想定すると、各コントローラーはコンテナーであり、各コンテナーには1つ以上のjsファイルが含まれています。 これらのファイルは、プロジェクトのフォルダーに配置されるパッケージに配置され、ブラウザーをダウンロードして使用します。



私は通常、次の構造に従います。 すべてのVueコードはViewModelフォルダーに配置されます。 Vueを使用するコントローラーごとに、ViewModelフォルダーにサブフォルダーを作成し、 main.jsファイルでコンテナーを呼び出します。 その後、GulpとBrowserifyを使用して、すべてのファイルをプロジェクトフォルダーに格納されているパッケージにパックします。 ビューはパッケージを参照し、ブラウザがページを要求すると、パッケージがダウンロードされて起動されます。



ちょっとした練習





コードに戻りましょう





サーバーからデータをロードする



Vueを使用すると、サーバーから取得したデータを抽出して表示できます。





現時点では、vue.jsとMVCを使用するにはこれで十分ですが、他のフロントエンドフレームワークと同様に、vueは読み込みの遅延に悩まされます。 ページをリクエストするときは、JavaScriptをロードして起動する必要があります。 次に、フレームワークは、データを受信するためにサーバーにさらにいくつかの要求を行います。 これを防ぐには、アニメーションやその他のハックの読み込みに頼る必要がありますが、MVCも使用しているため、Razorを使用し、ページの残りの部分と一緒にプレゼンテーション用のデータを読み込むことで、読み込みプロセスを改善し、高速化できます。



初期データの読み込み



多くのJSフレームワークは現在、さまざまなプリレンダリングの実装に取り​​組んでいますが、.NETスタックを使用して、代替ソリューションを思いつくことができます。



警告! この方法は、ブートストラップに少量のデータが含まれる場合に適しています。 それ以外の場合は、ページネーションまたはAJAXリクエストを使用して、ページの読み込みをスムーズにし、待ち時間を短縮することをお勧めします。



作成を始めましょう。 このために、以前に行ったプロジェクトを使用します。



 public ActionResult Index() { var serverModel = JsonConvert.SerializeObject(new { Name = "Marco", Surname = "Muscat", Description = "Vue data loaded from razor!" }); return View(new SampleModel() { Data = serverModel }); } public class SampleModel { public string Name { get; set; } public string Surname { get; set; } public string Description { get; set; } public string Data { get; set; } }
      
      







ルーティング



ルーティングが行われていないプロジェクトは完了したとは見なされません。 1ページに情報が多すぎるため、より複雑なアプリケーションでは複数の送信が必要になります。 MVCでVueを使用するのは素晴らしいことです。すべてのビューを同じページに完全にリロードすることなくロードできるからです。





結果は非常に良いように見えるかもしれませんが、それだけではありません。 まだ問題があります。 Vueコンポーネント(http:// localhost / vue-example / vuerouting / bar)を使用してアドレスをコピーし、新しいタブに貼り付けると、サーバーがこのルートを見つけることができないため、404エラーが発生します。 Vueルートを無視するように、サーバーでルーティングを構成する必要があります。





オリジナルへのリンク: tyk



この記事で提供した情報が、VueJSとMVCを使用してプロジェクトを作成する際に役立つことを願っています。 コメント、質問、提案がある場合は、コメントに残してください。



読んでくれてありがとう。



All Articles