【问题标题】:ASP.NET Core with Angular 5 -- When to use the assets folder vs. the wwwroot folder?带有 Angular 5 的 ASP.NET Core - 何时使用 assets 文件夹与 wwwroot 文件夹?
【发布时间】:2018-06-04 17:40:30
【问题描述】:

将 Angular 5 与 ASP.NET Core 结合使用时,新的 Visual Studio 项目同时包含 wwwroot 文件夹和 assets 文件夹:

问题是:静态内容(图片、css等)应该放在哪个文件夹中,什么时候使用一个和另一个?

根据answers在线,wwwroot文件夹是静态内容应该去的地方:

wwwroot 文件夹是 ASP.NET 5.0 中的新文件夹。项目中的所有静态文件都进入此文件夹。这些是应用程序将直接提供给客户端的资产,包括 HTML 文件、CSS 文件、图像文件和 JavaScript 文件。

不过,根据Angular's documentation,静态内容也可以进入assets文件夹:

在构建项目时,您可以使用 .angular-cli.json 中的 assets 数组列出要按原样复制的文件或文件夹。

【问题讨论】:

    标签: asp.net-core visual-studio-2017 angular5


    【解决方案1】:

    Angular 中使用和引用的所有静态内容都应该放在资产中。在 MVC 视图中使用的所有静态内容,在 ASP.NET Core 中直接应该转到 wwwroot。

    在构建/部署/发布期间,构建的 Angular 应用程序将自动复制到 wwwroot,因为这是 ASP.NET Core 应用程序的静态内容的根文件夹。 (因此,Angular 工件成为 ASP.NET Core 视图中的静态内容。但您不需要手动执行此操作。)

    【讨论】:

    • 值得注意的是,它们被复制了,但 wwwroot 位于 sitename/ 中,资产文件夹中的文件位于 sitename/asset/ 中
    【解决方案2】:

    只是一些关于此的附加信息。我今天在查看我公司即将重新设计的应用程序时遇到了类似的情况,我在 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)中的实际优势是,如果您决定单独部署和服务客户​​端应用程序,您只需获取 Angular 构建,其中包括资产文件夹并将它们移动到服务器而无需额外的工作。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 2019-06-10
      • 2016-12-22
      • 2016-07-17
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多