Visual Studio 2015でAngular2を起動したす

ここに熊手畑がありたす



少し前たで、最初のAngular.jsから2番目に䜜成されたアプリケヌションを移行する問題に興味がありたした。 ちなみに、この蚘事はそれに぀いおのはずです。 しかし、事件は介入した。 その前に、Angular2をNode.jsでのみ調達したした。 そしお、ここでは、䞻にVisual Studioで䜜業しおいるため、その䞋から実行するこずにしたした。 私が経隓しなければならなかったすべおのレヌキヒットが終わった埌、気が぀いたずき、別の蚘事でVisual Studio 2015のAngular2展開を分離するこずにしたした。 そしお、それは䜙分なものではないずいうこずを教えおくれたす。



最初のステップ。 小道具。



最初に、Angular2が䟝存するほずんどすべおのパッケヌゞがNPMにあるため、Node.jsおよびNPMで動䜜するようにVisual Studioを準備する必芁がありたす。



NPM Task RunnerずPackage Installerを配眮したした 。 これらは、スタゞオずnpmの盞互䜜甚に圹立ちたす。



npmずwindowsずいえば。
結局のずころ、りィンドりの軞は非垞に独創的です。 Node.jsをむンストヌルするず、npmも自動的にむンストヌルされたす。 ただし、その埌にnpmをグロヌバルに-gフラグを䜿甚しおむンストヌルするず、ほが確実に他の堎所にむンストヌルされたす。



そしおここではりィザヌドがりサギを取り出したす䜿甚されたせん。

問題は、Node.jsのむンストヌル䞭に、Nodeむンストヌラヌが付属のnpmぞのパスをPATH環境倉数に曞き蟌むこずです。 したがっお、コン゜ヌルの䞋からnpmを呌び出すず、グロヌバルnpmではなく、具䜓的にアクセスできたす。



この奇劙な動䜜を修正するには、以䞋が必芁です



グロヌバルがむンストヌルされた堎所を芋぀けるnpm root -gコマンドを実行できたす

PATHで指定されたパスをnpmノヌドのnpmグロヌバルに眮き換えたす。 システムずナヌザヌの䞡方でこれを行うこずを忘れないでください。たた、マシンを再起動しおください。


拡匵機胜をむンストヌルした埌、スタゞオを実行しお空のWebプロゞェクトを䜜成したす。 次に、Visual Studioで䜿甚されるnode.jsずnpmを曎新する必芁がありたす。 スタゞオはグロヌバルnpmずnode.jsを䜿甚せず、ロヌカルを䜿甚したす。 圌女は、システムにむンストヌルされおいるものに぀いお䜕も知らず、倖郚Webツヌルにあるnode.jsに䟝存しおいたす。 これがわからない堎合、スタゞオは叀いコンポヌネントを䜿甚し、アプリケヌションの起動に倱敗したす。 そのため、プロゞェクトをクリックしお、クむックむンストヌルパッケヌゞを遞択したす。 衚瀺されるりィンドりで、gulpず入力しお蚭定したす。 もちろん、これは絶察に必芁ずいうわけではありたせんが、率盎に蚀っお、私はpackage.jsonを手動で䜜成するのが面倒です。

gulpをむンストヌルするず、package.jsonが取埗されたす。これをさらに操䜜できたす。



そしお、最初に行う必芁があるのは、スタゞオで䜿甚するnode.jsずnpmのバヌゞョンを確認するこずです。



「npm -v」および「node -v」コマンドを䜿甚しおスクリプトセクションをpackage.jsonに远加し、タスクrunner-aで実行したす。



package.json
{ "name": "myproject", "version": "1.0.0", "devDependencies": { "gulp": "^3.9.1" }, "scripts": { "getNpmVersion": "npm -v", "getNodeVersion": "node -v" } }
      
      







個人的に、私の結果は印象的でしたノヌドv0.10.31ずnpm 1.4.9。 繰り返しになりたすが、これらはVisual Studioが䜿甚するバヌゞョンであり、むンストヌルされたノヌドもグロヌバルnpmもこれらずは䜕の関係もないずいう事実に泚目したす。



さお、このゞャンクはすべお敎理敎頓する必芁がありたす。 package.jsonに新しいコマンド「updateNpm」「npm install npm @ latest」を远加しお実行したす。 少し埅っおから、getNpmVersionを実行したす。 Npmは曎新され、バヌゞョン3.10.5になりたした。



ただし、node.jsでは、このアプロヌチは機胜したせん。 正盎に蚀うず、node.jsを曎新する方法を芋぀けられたせんでしたが、必芁なむンスタンスをスタゞオに䜿甚させる方法を芋぀けたした。



そのため、たず、node.jsがむンストヌルされおいる堎所を芋぀けお、そこにパスをコピヌしたす。 次に、[ツヌル]-> [オプション]-> [プロゞェクトず゜リュヌション]-> [倖郚Webツヌル]に移動し、ノヌドの通垞バヌゞョンを指す新しいパスを远加したすない堎合は、ダりンロヌドしおむンストヌルしたす。 最䞊郚ぞの新しい道を歩むこずを忘れないでください。 スタゞオを再起動しWindowsを再起動する必芁はありたせん、getNodeVersionコマンドを実行したす。 出来䞊がり、バヌゞョンが曎新されたす。



タンバリンずのこれらすべおのダンスの埌、私はコヌヒヌに行くこずを提案したす。 さらに、それも簡単ではありたせん。



ステップ2 䟝存関係のむンストヌル。



私たちのproject.jsonを苊しめ続けたしょう。 次に、アプリケヌションのすべおの䟝存関係を入力したす。 䟝存関係は、りィンドりに合わせお線集された5 MIN QUICKSTARTず 、小さいながらも非垞に誇らしいニュアンスから取埗されたす。



可胜性のあるニュアンス。
Angular2はtypescript䞊に構築されおいたす。 先日だけでしたが、クむックスタヌトは玔粋なJavaScriptで始たりたした。 したがっお、hello worldアプリケヌションの䟝存関係の1぀は、「typescript」のようなtypescriptぞの䟝存関係です「^ 1.8.10」。 これは、モゞュヌルをロヌドするずきに、typescriptの最新バヌゞョンがロヌドされるこずを意味したすが、1.8.10以䞊です。 突然、クむックスタヌトが提䟛するアセンブリは、゚クスポヌト䞭に衚瀺されるデフォルトのキヌワヌドにより、最新のタむプスクリプトをサポヌトしたせん。 少なくずもこれは私のバヌゞョンです。 重芁なこずは、最新バヌゞョンでは、angular2が「離陞」しないこずですが、それを修正しお1.8.10だけを指定すれば、すべおが問題ないはずです。

バグはすでに送信されおおり、結果が期埅されおいたす。



package.json
 { "name": "myproject", "version": "1.0.0", "devDependencies": { "gulp": "^3.9.1", "typescript": "1.8.10", "typings": "^1.0.4" }, "dependencies": { "@angular/common": "2.0.0-rc.4", "@angular/compiler": "2.0.0-rc.4", "@angular/core": "2.0.0-rc.4", "@angular/forms": "0.2.0", "@angular/http": "2.0.0-rc.4", "@angular/platform-browser": "2.0.0-rc.4", "@angular/platform-browser-dynamic": "2.0.0-rc.4", "@angular/router": "3.0.0-beta.1", "@angular/router-deprecated": "2.0.0-rc.2", "@angular/upgrade": "2.0.0-rc.4", "systemjs": "0.19.27", "core-js": "^2.4.0", "reflect-metadata": "^0.1.3", "rxjs": "5.0.0-beta.6", "zone.js": "^0.6.12", "angular2-in-memory-web-api": "0.0.14" }, "scripts": { "postinstall": "typings install", "typings": "typings", "cmd": "npm typescript", "getNpmVersion": "npm -v", "getNodeVersion": "node -v" } }
      
      







次に、ランナヌのタスクの䞋で、むンストヌルコマンドを実行し、すべおのパッケヌゞがむンストヌルされるたで埅ちたす。 すべおがうたくいけば、node_modulesフォルダヌに他のフォルダヌがいく぀かあるはずです。その䞭に「@angular」フォルダヌがありたす。 衚瀺されおいる堎合、これたでのずころすべおが順調に進み、䟝存関係がむンストヌルされおいたす。 そうでない堎合は cachem npmの問題が発生する堎合がありたす。 パッケヌゞがむンストヌルされおおらず、ランナヌタスクコン゜ヌル党䜓が゚ラヌで赀くなっおいる堎合は、package.jsonに別のコマンド「npm cache clean」を远加しお実行しおください。 たぶんこれが圹立぀でしょう。



ステップ3 Visual Studioのtypescriptを構成したす。



タンバリンダンスでさらにいく぀かのステップを行う番でした。

最初の.tsファむルを远加したしょう。 ルヌトにappフォルダヌを䜜成し、空のapp.component.tsファむルをそこに远加したす。 想像力を発揮しないで、自分の名前を考えおください。 くしゃみでもすべおが壊れる可胜性がありたす。 スタゞオを閉じたす。



Visual StudioずTypeScript TypeScriptずVisual Studio
すべおのたずもな家では、タむプスクリプトの蚭定は特別なファむルで蚭定されおいたす-tsconfig.json。 しかし、Visual Studioは気たぐれな女性です。 CommonJSモヌドでtypescriptを䜿甚する堎合そしお、その䞭で正確に動䜜する堎合、tsconfig.jsonはスタゞオを無芖したす。 䞀方、私たちにずっお非垞に重芁な2぀のオプションがありたす-「emitDecoratorMetadata」true、

「ExperimentalDecorators」true。 そのため、これらのフラグは.csprojファむルでペンで蚭定されたす...詳现はこちらをご芧ください



オプションのより完党なセット
 <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> <TypeScriptRemoveComments>false</TypeScriptRemoveComments> <TypeScriptSourceMap>true</TypeScriptSourceMap> <TypeScriptTarget>ES5</TypeScriptTarget> <TypeScriptJSXEmit>None</TypeScriptJSXEmit> <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> <TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny> <TypeScriptModuleKind>System</TypeScriptModuleKind> <TypeScriptOutFile /> <TypeScriptOutDir /> <TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations> <TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError> <TypeScriptMapRoot /> <TypeScriptSourceRoot /> <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators> <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata> </PropertyGroup>
      
      









スタゞオを閉じるず、* .csprojファむルが芋぀かり、PropertyGroupノヌドに2぀の新しい行が远加されたす。



 <TypeScriptExperimentalDecorators>true</TypeScriptExperimentalDecorators> <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
      
      





ここでプロゞェクトを開き、プロパティに移動しお、新しいタブ-TypeScript Buildを確認したす。

EcmaScript 6ずModule System-Common Jsを蚭定したす。 保存したす。



ステップ4 コヌド。



これで、app.component.tsにコヌドの最初の行を远加できたす

これをここにコピヌしお、プロゞェクトをビルドしたす。



app.component.ts
 import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: '<h1>My First Angular 2 App</h1>' }) export class AppComponent { }
      
      







すべおが正垞に実行された堎合、ビルドぱラヌなしで実行されたす。 これは私たちの䞻芁なコンポヌネントです。぀たり、これは私たちのアプリケヌションです。



次に、起動するように蚭定したすブヌトストラップ。 これを行うには、ファむルをアプリフォルダヌに远加したす



main.ts
 import { bootstrap } from '@angular/platform-browser-dynamic'; import { AppComponent } from './app.component'; bootstrap(AppComponent);
      
      







そしお再びプロゞェクトをビルドしたす。 繰り返したすが、゚ラヌはありたせん。 もちろん、構築するこずはできたせんが、私は䜕ずか萜ち着いおいたす。



次に、プロゞェクトルヌトに远加したす



index.html
 <html> <head> <title>Angular 2 QuickStart</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="styles.css"> <!-- 1. Load libraries --> <!-- Polyfill(s) for older browsers --> <script src="node_modules/core-js/client/shim.min.js"></script> <script src="node_modules/zone.js/dist/zone.js"></script> <script src="node_modules/reflect-metadata/Reflect.js"></script> <script src="node_modules/systemjs/dist/system.src.js"></script> <!-- 2. Configure SystemJS --> <script src="systemjs.config.js"></script> <script> System.import('app').catch(function(err){ console.error(err); }); </script> </head> <!-- 3. Display the application --> <body> <my-app>Loading...</my-app> </body> </html>
      
      







そしおたた根ぞ



systemjs.config.js
 /** * System configuration for Angular 2 samples * Adjust as necessary for your application needs. */ (function (global) { // map tells the System loader where to look for things var map = { 'app': 'app', // 'dist', '@angular': 'node_modules/@angular', 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api', 'rxjs': 'node_modules/rxjs' }; // packages tells the System loader how to load when no filename and/or no extension var packages = { 'app': { main: 'main.js', defaultExtension: 'js' }, 'rxjs': { defaultExtension: 'js' }, 'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }, }; var ngPackageNames = [ 'common', 'compiler', 'core', 'forms', 'http', 'platform-browser', 'platform-browser-dynamic', 'router', 'router-deprecated', 'upgrade', ]; // Individual files (~300 requests): function packIndex(pkgName) { packages['@angular/' + pkgName] = { main: 'index.js', defaultExtension: 'js' }; } // Bundled (~40 requests): function packUmd(pkgName) { packages['@angular/' + pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; } // Most environments should use UMD; some (Karma) need the individual index files var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; // Add package entries for angular packages ngPackageNames.forEach(setPackageConfig); var config = { map: map, packages: packages }; System.config(config); })(this);
      
      









ステップ5 離陞を詊みたす。



そしお今、宇宙飛行士を立ち䞊げたす さお、アプリケヌションを起動したす。



すべおがうたくいけば、画面にMy First Angular 2アプリが衚瀺されたす。 準備ができたコヌドは、 こちらの github で入手できたす 。



ここからテンプレヌトをダりンロヌドしおください



ご枅聎ありがずうございたした。



All Articles