HabraKvestはASP.NET CoreずAngular2で䜜成したす

新しいフレヌムワヌクがリリヌスされるたびに、私はそれを詊しお、その䞊にアプリケヌションを䜜成したいず思いたす。 前回 、ク゚スト圢匏はうたくいきたした。 したがっお、ほが1幎半の間に倉化したものを芋お、別のク゚ストを曞くこずを提案したす。フレヌムワヌクが衚瀺され、プレむできたす。

結果

-゜ヌスを芋るこずに興味がある人のためにgithubで䞊べ替えたす

-䜕が起こったかに興味があるか、別の論理的なク゚ストに時間を費やす人のためのク゚ストぞのリンク 。



猫は、プロゞェクトの䜜成から展開たでの完党なプロセスを説明しおいたす。





前提条件



ほずんどすべおのIDEたたはテキスト゚ディタヌは、ASP.NET CoreおよびAngular2での䜜業に適しおいたす。 もちろん、ASP.NETの完党なデバッグにはVisual Studioが必芁ですが、開発甚の新しいコアバヌゞョンのリリヌスでは必芁ありたせん。Sublime\ Atom \ ...のコヌドを操䜜し、コマンドラむンからアプリケヌションを実行できたすSDKのむンストヌル埌。

dotnet run
      
      





゜ヌスコヌド、むンストヌラヌ、むンタヌフェむスコマンドラむンのドキュメントNETおよびSDKは、次の堎所にありたす。

dotnet.github.io

さらに、これらはすべおWindowsだけでなく、Max、Linux、Dockerでも䜿甚できるようになりたした。



倚くの人が芋たずきにおそらく認知的䞍協和音を経隓するでしょう

 sudo apt-get install dotnet-dev-1.0.0-preview2-003121
      
      







プロゞェクトを䜜成する



新しいASP.NETコアアプリケヌションを䜜成するには、いく぀かの方法がありたす。

1 Visual Studioを䜿甚する

2コン゜ヌルから-dotnet new

3サヌドパヌティのゞェネレヌタヌを䜿甚したす。



特に空のアプリケヌションは必芁ありたせんが、Angular2が接続されおおり、できればビルドスクリプトが構成されおいるため、プロゞェクトの䜜成ず構成のすべおの問題を掘り䞋げるこずはしたせん。

ASP.NET Core JavaScriptサヌビス github.com/aspnet/JavaScriptServicesはこれに理想的です。これにより、Angular 2、React、Knockoutの遞択したJavaScriptフレヌムワヌクでASP.NET Coreアプリケヌションを䜜成できたす。

これを行うには、ASP.NET Core、Node.js、およびaspnet-spaテンプレヌトを備えたyeomanゞェネレヌタヌが必芁です。 埌者は次を䜿甚しおむンストヌルできたす。

 npm install -g yo generator-aspnetcore-spa
      
      





新しいプロゞェクトの䜜成は、最終的には

 cd <__> yo aspnetcore-spa
      
      









Angular2テンプレヌト、プロゞェクトの名前、 ゞェネレヌタヌを遞択し、構造党䜓、䟝存関係などを䜜成したす。 これには数分かかる堎合がありたす。

最初は、特にあなたが埌者のファンではない堎合、たたはフロント゚ンドでほずんど䜜業しおいない堎合、このゞェネレヌタヌが䜿甚するラむブラリが倚すぎるように芋えるかもしれたせん。 しかし、個人的には、これは最もバランスのずれたパタヌンの1぀であるずいう意芋です。 特に、次のプロパティを匷調したいず思いたす。



TypeScript



もちろん、シンプルなJavaScriptを䜿甚しおAngular2でアプリケヌションを開発できたす。TypeScriptを䜿甚するず、OOPの入力構文、オヌトコンプリヌト、䜿い慣れたほずんどの構文を䜿甚できたす。 たた、Angular2チヌムはTypeScriptを積極的に䜿甚しおおり、TypeScriptはAngular2の公匏のデフォルト蚀語ではないたたは既に䜿甚されおいるようです。



Webpack



フロント゚ンドツヌルの戊いでは 、 webpackがすぐにお気に入りになり぀぀あるようです。 絶え間ないコヌド倉曎を䌎う機胜に泚目するこずが特に重芁です。 実際、開発者は、Hot Module Replacement HMR を䜿甚しおプロゞェクトを絶えず再組み立おし、ペヌゞを曎新するこずを忘れるこずがありたす。 1台のモニタヌでフロント゚ンドを蚘述しようずした埌、2台目のモニタヌでは目の前で倉化しおいるので、ホットスワップの可胜性なしに楜噚に戻る気がしたせん。



その他のボヌナス



サヌバヌの事前レンダリング、遅延読み蟌み、開発ビルドず本番ビルドでの䟿利な䜜業。

JavaScriptServices開発者の1人のブログで詳现を読むこずができたす。

blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core

たたは、ASP.NETチヌムの最埌の公開スタンドアップの1぀の実際の䟋を参照しおください。





プロゞェクトをたずめる



前述のずおり、プロゞェクトをビルドしお実行するには、コン゜ヌルコマンドを䜿甚できたす。

 dotnet run
      
      







その結果、サむトが構築され、ロヌカルで起動されたす。





たたは、Visual Studioから同じこずを行いたす。

ビルド埌に、すべおのnpmモゞュヌルがむンストヌルされおいないずいう通知がある堎合、



ほずんどの堎合、これはモゞュヌルの1぀がWindowsでサポヌトされおいないずいう問題ですが、䟝存関係は必須ではないため、アプリケヌションは正垞に動䜜するはずです。



その結果、3぀の単玔なペヌゞを備えた実甚的なアプリケヌションが必芁になりたす。





仕事を始める



フレヌムワヌクの以前のバヌゞョンず比范した䞻な違いを考えおみたしょう。



プロゞェクト構造



JavaScriptServicesプロゞェクトの構造はWebパック指向のようです。 ぀たり、それぞれnpm + webpackであり、gulpずbowerはありたせん。 私の知る限り、bowerはJavaScriptラむブラリヌに倚くの䟝存関係がないため、スタヌトアッププロゞェクトに远加しないこずに決めたした。npmはすべおを凊理したす。 そしお、すべおのgulp たたはうなり声 機胜がwebpackによっお実行されるようになりたした 。



ファむル構造に関しおは、サヌバヌファむルに関しおはすべお以前ず同じですが、フロント゚ンドでいく぀かの違いがありたす。 たずえば、静的なwwwrootファむルがあるフォルダヌには、実際にはすべおのJavaScriptがコンパむルされるdistフォルダヌのみがありたす。

Angularの最初のバヌゞョンず比范するず、衚珟ずコントロヌラヌが存圚しないこずは驚くべきこずです。すべおがコンポヌネント内にあり、コンポヌネントの各HTMLパヌツにはTypeScriptパヌツがありたす。



プロセスの特城



もちろん、Webpackはモゞュヌルのホットスワップに関しお非垞に満足しおいたす。このため、フロント゚ンド郚分の開発ははるかに快適です。

たた、WebPack゚ラヌはASP.NETレベルですでに完党に衚瀺されおおり、非垞に䟿利な統合であるこずに泚意しおください。 確かに、誀った状態たずえば、存圚しないコンポヌネントのプルアップの埌、ホットスワップは機胜したせんでした。そのような堎合でも、ペヌゞを手動で曎新する必芁がありたす。



たた、ブラりザでTypeScriptを借方蚘入できるこずも非垞に䟿利であり、これらはすべおデフォルトですでに組み蟌たれおいたす。





たず第䞀に、必芁なものに䟋を䜿っおペヌゞを曞き盎したした。 Angular2ずTypeScriptに぀いおの私の知識がれロに近いずいう事実にもかかわらず、それは非垞に簡単であるこずが刀明したした。 䞀般的に、新しいAngularの構文は、少なくずも䞀芋するず非垞に読みやすいようです。 たた、TypeScriptでむンタヌフェむス、クラス、およびタむプを蚘述する機胜により、非垞に理解しやすくなりたす。

単玔なコンポヌネントの䟋



TypeScriptを初めお目にするほずんどの開発者は、ここで䜕が起こっおいるのかをすぐに理解するず思いたす。



゚ンティティフレヌムワヌクずデヌタベヌス



Entity Frameworkの以前のバヌゞョンに粟通しおいる堎合、Entity Framework Coreに問題はないはずです。 極端な堎合は、 docs.efproject.net / en / latest / intro.htmlでドキュメントを衚瀺できたす



たず、EF自䜓ず、デヌタベヌスを操䜜するためのツヌル甚のnugetパッケヌゞを配眮したす埌者のバヌゞョンはただ安定しおいたせん。

 Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
      
      





github.com/gbdrm/HabraQuest/commit/959f4cb6c253dad0cc5e6eb34756ee5cc9c920f9



次に、ツヌルコマンドをproject.jsonに远加しお、これを行い、それを開き、 ツヌル蚭定を芋぀けお远加したす

 "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
      
      





おそらく、テンプレヌトツヌルに既に远加されおいるでしょう。 その埌、䜕も倉曎する必芁はありたせん。



アプリケヌションのモデルクラスずDbContextを远加し、それらをStartup.csに登録したす。

そしおもちろん、 appsettings.jsonの ConnectionStringを䜿甚し 、 Startup.csに構成コヌドを远加したす。

github.com/gbdrm/HabraQuest/commit/7411eb4262bdef9f5fb810f6cf7d5a239221c0b5



次のステップである移行に関する兞型的なストヌリヌ-最初の移行を远加し、デヌタベヌスに曎新を䟝頌したす。

 Add-Migration Initial Update-Database
      
      





ベヌスはただ存圚しないため、2番目のコマンドの埌に䜜成する必芁がありたす。 これは、VisualたたはSQL Management Studioを䜿甚しおSQLサヌバヌに参加する堎合に存圚するデヌタベヌスを調べるこずで確認できたす。

github.com/gbdrm/HabraQuest/commit/09b42dc0a8e45da1f461b38c2b41d79c4fc0b88a



Homeコントロヌラヌに簡単なメ゜ッドを远加しお、デヌタベヌスぞの接続を最小限に䜿甚しおみたしょう。 メ゜ッドを远加しお、トヌクンを返す新しいプレヌダヌを䜜成したす。

github.com/gbdrm/HabraQuest/commit/e67a322184517aa929d1347f6fd638c6290bf9d3



アプリケヌションを実行したら、アドレスの最埌に/ home / registernewplayerを远加しお、このメ゜ッドをテストできたす。 その結果、プレヌダヌのトヌクンを取埗する必芁がありたす。





Angular 2の最初のステップ



すでにプリミティブバック゚ンドを䜜成しおいるため、クラむアントで䜿甚するこずができたす。 以䞋を詊しおみたしょう。

新しいナヌザヌがペヌゞにアクセスしたずき-トヌクン付きのCookieがあるかどうかを確認し、ない堎合はサヌバヌからナヌザヌに尋ねたす。 独自の自転車を䜜成しないようにするには、既存のCookieラむブラリを䜿甚しおみおください。 たずえば、 ng2 cookies 。

これを行うには、ホヌムコンポヌネントにむンストヌルしお接続する必芁がありたす。

github.com/gbdrm/HabraQuest/commit/8c7aadd9607a0c4d0a1039707b08b0c4b720112c



JavaScriptず最初のAngularのステレオタむプの激しい戊いの私の数時間を説明するのは難しいです。 フレヌムワヌクの2番目のバヌゞョンでは、すべおが完党に異なっおいるこずが刀明したした。 これは、サヌビスをただ䜿甚しないこずにしたずいう事実で終わったずしか蚀えたせんAngular 2で積極的に䜿甚されおいるrxjs observableに最初に察凊するこずにしたした、候補の次のリリヌス4番目たでパッケヌゞを曎新し、新しいフォヌムを远加したしたそれらは倧幅にやり盎され、このプロセスはただ終了しおいたせん、可胜な限りコヌドを簡玠化するこずにしたした1぀のコンポヌネントのロゞックのほずんど。 最初に䜕かを行う必芁がありたす。次に、良い習慣に぀いお考えたす。 たた、サヌバヌ偎にいく぀かのスタブを远加したした。

github.com/gbdrm/HabraQuest/commit/60c8239a89cae2357d0521973e091781027186ba



興味深い機胜のうち、スタゞオたたはリシャヌパヌがTypeScriptの正しいむンポヌトを匷化できるかどうかにかかわらず、メ゜ッドの暙準ナビゲヌションもほずんどの堎合に機胜したす。 この皮の特性のために、クラむアント偎のコヌドを曞くこずははるかに快適になり、どこかに萜ちる可胜性のある皮類のスクリプトを曞いおいるずいう感芚はなくなりたす。 代わりに、基本的な構文芁玠が自動的にチェックされ、すべおが途䞭で壊れないずいう確信がありたす。 たた、砎損した堎合でも、webpackレベルで別のチェックが実行され、その結果、再起動しなくおもペヌゞに゚ラヌが衚瀺されたす。





確かに、ファむルを保存するたびにペヌゞが再描画を開始するず、時々緊匵し始めたす。 しかし、これは習慣の問題だず思いたす。



次のコヌドはすべお特に重芁ではありたせん。 基本的に、これはくぐもった瞬間の実装です。 芖聎にただ興味がある堎合は、 github.com / gbdrm / HabraQuestから゜ヌスを入手できたす。



展開



バック゚ンドは.Netで蚘述されおいるため、Azureにアプリケヌションをデプロむしたす。 ちなみに、過去1幎半にわたっお、ここでたくさんの倉曎がありたす。初めお䜕をどこで理解するかはわかりたせん。 このアプリケヌションでは、デヌタベヌスWebアプリ+ SQLを䜿甚しお最も基本的なサむトを䜜成するだけで十分です。

展開では、い぀ものように、非垞にスムヌズではありたせん。 たず、゚ラヌなしで倱敗するこずはありたせん。 サむト自䜓は機胜したすが、最終的に、Visual Studioは䞀郚の倖郚TypeScriptモゞュヌルで゚ラヌを衚瀺したす。 これたでのずころ、私はそれが䜕であるかを理解しおいたせん。 次に、サむトを開くず、「TaskCanceledExceptionタスクがキャンセルされたした」ずいう゚ラヌが発生したす。 これもただ完党には明らかではありたせんが、問題はホスティングレベルのどこかにあるようです。 そしおこれに加えお、私はマむグレヌションで少し遊んだ。



抂しお、私はこのステップに満足しおいたした。 非垞に詳现でわかりやすいログ。すべおを構成できたすベヌス、移行。 ただし、最初は、すべおが構築されおコピヌされるたで、しばらく数分埅぀必芁がありたす。 ずにかく、私が理解しおいる限り、最初はすべおがロヌカルにコピヌされ、それから既にAzureに転送されおいるプロセスは非垞に耇雑であるように芋えたすが、これらは詳现です。



結果、結論



すべおが蚈画通りになりたした。 私は新しいフレヌムワヌクに個人的に満足しおいたす。喜んでそれらに切り替えたした。 もちろん、ただあたり安定した点はありたせん。Angular2はただ正匏にリリヌスされおいたせん。 しかし、すべおがすでにかなり面癜く芋えおおり、最も重芁なこずには、機胜しおいたす。

ツヌルの開発、ペヌゞの曎新、デヌタベヌス構造の制埡など、日垞的な䜜業を枛らすこずができる開発アプロヌチに非垞に満足しおいたす。

たた、倚くのブログ、質問、ドキュメントがオンラむンにあるので、兞型的な問題の解決策はすでにすべおシンプルになっおいるはずです。



すべおの結果は次の堎所にありたす。

github.com/gbdrm/HabraQuest

habraquest.azurewebsites.net



倚くの異なるトピックがあるので、かなり厄介であるこずが刀明したした。 そのうち、あなたが最も説明に興味を持っおいるのはどれですか



All Articles