Asp.net-Core

帶有 Angular 5 的 ASP.NET Core - 何時使用 assets 文件夾與 wwwroot 文件夾?

  • December 17, 2021

將 Angular 5 與 ASP.NET Core 一起使用時,新的 Visual Studio 項目包含 wwwroot 文件夾和 assets 文件夾:

wwwroot 和資產

**問題是:**靜態內容(圖像、css 等)應該放在哪個文件夾中,什麼時候使用一個與另一個?

根據線上答案,wwwroot 文件夾是靜態內容應該去的地方:

wwwroot 文件夾是 ASP.NET 5.0 中的新文件夾。項目中的所有靜態文件都進入此文件夾。這些是應用程序將直接提供給客戶端的資產,包括 HTML 文件、CSS 文件、圖像文件和 JavaScript 文件。

但是,根據Angular 的文件,靜態內容也可以進入 assets 文件夾:

在建構項目時,您可以使用 .angular-cli.json 中的 assets 數組列出要按原樣複製的文件或文件夾。

Angular 中使用和引用的所有靜態內容都應該放在資產中。在 MVC 視圖中使用的所有靜態內容,直接在 ASP.NET Core 中應該轉到 wwwroot。

在建構/部署/發布期間,建構的 Angular 應用程序將自動複製到 wwwroot,因為這是 ASP.NET Core 應用程序的靜態內容的根文件夾。(因此,Angular 工件成為 ASP.NET Core 視圖中的靜態內容。但您不需要手動執行此操作。)

只是一些關於此的附加資訊。我今天在查看我公司即將重新設計的應用程序時遇到了類似的情況,我在 wwwroot 和 assets 文件夾中都找到了靜態文件。

根據問題中的螢幕截圖,該項目是使用 Visual Studio 附帶的 Net Core Angular 模板創建的:https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular? view=aspnetcore-3.1&tabs=visual-studio(與我今天查看的項目中使用的模板相同)。預設情況下,你會得到一個像這樣的文件夾結構(附上新項目的截圖):

在此處輸入圖像描述

favicon.ico 位於 wwwroot 文件夾中,因此您可以繼續在 wwwroot 文件夾中添加圖像和其他靜態文件,該應用程序將正常執行。該模板配置為在生產中使用文件夾“ClientApp/dist”(圖像附加自使用 .NET Core 3.1 的 Angular 模板創建的新項目),假設您將全部作為一項服務提供服務。

在此處輸入圖像描述

因此,這兩種方法都可以,但資產文件夾似乎是一個更好的地方。那是我作為開發人員期望為 Angular 應用程序找到靜態文件的地方。

我從將靜態文件保存在 Angular 項目(文件夾 ClientApp/src/assets)中看到的實際優勢是,如果您決定單獨部署和服務客戶端應用程序,您只需獲取包含 assets 文件夾的 Angular 建構並將它們移動到伺服器而無需額外的工作。

引用自:https://stackoverflow.com/questions/47935220