[英]How to properly set up a new Angular 6 project
在我學習Angular的過程中,我遇到了兩種創建新Angular項目的方法。
第一種是使用Angular CLI命令:
ng new app-name-here
第二個是使用命令:
dotnet new angular app-name-here
生成的項目看起來非常不同,我需要介紹很多部分。 這兩種方法有什么區別? 當目標是構建與給定ASP.Net Core API通信的客戶端應用程序時,每種方法的優缺點是什么?
dotnet new angular
使用的模板來自微軟 。
這是一個凍結的時間模板,其明顯的缺點是它總是過時,因為Angular一直在變化。
通常,您只需說ng update
和/或按照Angular更新指南獲取最新更新即可。 然而,在主要版本發布之后,這是一個更大的問題 - 現在模板使用Angular 5,而Angular 6是最新的。
該模板有一些優點和缺點:
好處
ng new
更有用的樣本。 缺點
.angular-cli.json
現在是angular.json
,格式完全不同。 如果你是剛接觸角度,這只會增加整體頭痛。 ng update
似乎永遠不會對我有效。 查看Angular升級指南。 由於5> 6的主要變化,我建議不要立即使用此模板,除非進行臨時測試。 。
對我來說,我發現最好的辦法是遵循以下步驟:
dotnet new angular
或dotnet new angular -o projectname
將其放在子目錄中。 這將獲得您的Spa模板設置,以將dotnet世界連接到角度世界。 ClientApp
文件夾的內容 - 或重命名它,以便您可以參考示例代碼,如果您是Angular的新手 ClientApp
文件夾 ng new --help
以查看所有可用選項 ng new sjw_website --routing --style=scss -prefix=sjw
前綴是您的自定義組件元素的開頭(例如,'name'是創建的文件夾(將在ClientApp中)
npm start
運行你的Angular應用npm start
,它在端口4200上npm start
它(從ClientApp/sjw_website
的新文件夾運行它)。 您可以立即在http:// localhost:4200上查看此內容,該內容與dotnet完全分開並在Angular自己的服務器中運行。 startup.cs
的SPA模板以使用這行代碼spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
這將代理對角度服務器的請求。 startup.cs
以指向ClientApp/sjw_website
(或手動將文件移動到某個級別) powershell
來構建和運行(在包含你的dotnet項目的文件夾中) dotnet build
並運行dotnet run
dotnet watch run
請注意,在更改角度文件時,角度ng serve
開發服務器下運行的角度項目將自動重新啟動。 使用dotnet watch
時,當您對dotnet文件進行更改時,dotnet服務器將重新啟動。
打開兩個將是您的最佳體驗,最好是在第二台顯示器上。
請注意,當您執行生產構建時,嵌入在csproj
文件中的npm build
命令會執行魔術並將輸出指向dist
文件夾。
新的
使用CLI創建新的角度項目。 它不會創建您需要的任何后端代碼/項目
dotnet新角度
基於MS提供的模板創建新的.NET核心項目。 它還會創建(大多數?)Angular部分所需的文件。 既然你想要一個ASP.NET核心后端,我會想要一個單命令解決方案。 我自己沒有用過,所以你的里程我的變化。
手冊
您始終可以在Visual Studio中創建ASP.NET Core WebAPI項目,然后在其中ng new
一個應用程序。 這是我通常采取的路線。
編輯(201年5月31日)
今天我創建了一個DotNet項目模板,可以為任何人提供這些步驟。 你可以在這里試試:
AspNetCore2Ang6Template: https : //github.com/JuanGarciaCarmona/AspNetCore2Ang6Template
結束編輯(201 / MAY / 2018)
對第二個問題:
當目標是構建與給定ASP.Net Core API通信的客戶端應用程序時,每種方法的優缺點是什么?
恕我直言最好的選擇是同時擁有兩個項目,因為您可以從單個項目部署和服務客戶端(角度)和API(ASP NET核心Web API控制器),這在開發階段是很好的並且便於部署。 為了實現這么好的選擇是混合兩種機制,你可以創建dotnet項目,在其里面角度代碼也包含它的地方,添加和使用MVC到你的應用程序並提供角度應用程序。
最簡單的配方是:
一旦完成,請轉到angular.cli並將輸出設置為'wwwroot'(而不是'dist / XXXXXX'4 .-您的啟動類應該是:
public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); app.UseDefaultFiles(); app.UseStaticFiles();
}}
然后你可以使用dotnet run或ng serve來運行它,這兩個命令都可以運行。
有一件事,至少對我來說是缺失的,是實時重新加載不起作用,一旦我為我修復它我會更新這個答案。
我希望它有所幫助,
胡安
編輯(26 / MAY / 2018)
關於實時重新加載,我無法通過從VS調試或使用dotnet運行運行應用程序來實現這一目標,但是檢查樣式和小而棘手的自定義我所做的是使用'ng serve'啟動Web應用程序。
如果您需要同時啟動和運行客戶端和服務器,因為您需要從客戶端應用程序調用api控制器,那么您可以使用environment.ts配置您的api基本URL,並在此期間從VS和您的前端運行您的后端用ng服務結束。 希望這將在未來的VS版本中得到解決或修復,或者正如我所見,在為Angular 6准備的更新的asp net core SPA模板中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.