Var ska .html, .css, etc. filer för Typescript + Angular 2 + ASP.Net Core 1.0 placeras?
Typescript-handledning för att skapa en ASP.Net Core-applikation (med eller utan Angular 2) föreslår att vi skapar en mapp Scripts och använder en gulp-uppgift för att endast kopiera .js-filerna till wwwroot-mappen, t.ex. under byggningen.
Nu börjar det bli begripligt, men vad gör vi med alla .html-, .css- och liknande filer som Angular 2 kan använda? Det verkar som att det i allmänhet finns två sätt att göra det på:
Lägger till dem i
wwwroot-mappen.Fördelar: inget behov av att lägga till en gulp-uppgift för dessa statiska filer
Nackdelar: vi måste duplicera mappstrukturen och utföra operationer som kopiera/byt namn/etc två gånger
Att hålla dem i
Scripts-mappen utanförwwwroot(då borde vi helst byta namn på den tillSourceeller något liknande).Fördelar: ingen duplicering, allt på ett ställe
Nackdelar: vi kommer att behöva kopiera dem till
wwwrooti gulp-uppgift
I fall 2 blir wwwroot som en bin-mapp för vanliga applikationer.
Finns det några officiella riktlinjer/råd om ämnet (jag kunde inte hitta några) som jag kan använda som referens?
Svar #1
Generellt använder folk metod 2, även om de flesta (inklusive jag) kallar mappen "app" snarare än "source" eller "scripts" och kopierar dem via gulp.
En anledning till att göra detta är att vi kan utesluta wwwroot-mappen från källkontrollhantering. En annan är att för produktion vill du paketera dina filer (både html, css och de resulterande *.js-filerna), så din wwwroot-mapp kommer att innehålla olika uppsättningar av data, beroende på om du utvecklar eller distribuerar den.
Och eftersom dess innehåll kommer att ändras ofta (med varje bygg-/paketering) och det kan generera ganska stora och minifierade filer, är det ändå mindre lämpligt för källkontroll (minifierade/uglifierade/konkatenerade filer är svåra/omöjliga att skapa diffar för).
För Angular specifikt vill du hålla *.html, *.ts, *.js och *.css (endast de som är relaterade till komponenter) på samma plats/undermapp. Visual Studio kommer automatiskt att gruppera dem tillsammans (d.v.s. sample.component.html, sample.component.ts, sample.component.css och sample.component.js kommer att grupperas tillsammans och du kan fälla ut dem genom att trycka på den lilla triangeln bredvid det grupperade namnet) och det fungerar bra för bundling eftersom Angular2 css/mall kan göras för att använda komponentrelativ sökväg, om du använder en modul-laddare (rekommenderas!).
Svar #2
Jag tycker inte att gulp känns som ett hjälpsamt verktyg, så använd det inte i min mall (ng2+material+asp.net core). Men jag måste komma ihåg att köra "npm start" för att kompilera alla ng2-ändringar innan jag kör "dotnet run".
här är min lösningsmall som du kan prova: https://github.com/Longfld/ASPNETCoreAngular2