如何设置 ASP.NET API / AngularJS 项目

Posted

技术标签:

【中文标题】如何设置 ASP.NET API / AngularJS 项目【英文标题】:How to set up a ASP.NET API / AngularJS project 【发布时间】:2015-04-16 08:32:15 【问题描述】:

我正在启动我自己的 Angular Web 应用程序。我有使用 c# 和 angular 编码的经验,但我从来不需要设置自己的项目/解决方案。在这种情况下,我想设置一个 ASP.NET Web API,它将与 JSON 中的 Angular SPA 前端通信(尽管它应该与前端无关,但任何使用 JSON 的应用程序都应该能够与之通信)。

另外,我听说过关于 grunt 的好消息,所以我想将它合并到项目中(至少要编译 LESS 并缩小和合并我的 angular 文件)。

我正在使用 Visual Studio Professional 2013。我首先创建了一个 Web API 项目并下载了 WebEssentials 插件。

我只是有点困惑如何在此处继续。我应该在同一个解决方案中将我的角度拆分成一个单独的项目吗?我如何包含咕噜声? 如何在 Visual Studio 的上下文中使用 grunt 将我的角度文件包含在我的 index.html 文件中?

该项目带有一个 Scripts 文件夹和一个 Views 文件夹。我知道最好按功能构造角度文件,以便将控制器和视图放在一起。我应该在脚本文件夹中包含我的视图吗?这对我的构建过程有何影响?

我意识到这些可能是非常幼稚的问题。请耐心等待,当涉及到这些类型的任务时,我是一个完全的初学者。我过去所做的基本上都是代码。

【问题讨论】:

【参考方案1】:

让我们一步一步来:

带有 Web Api 和 Angular JS 的 Visual Studio 解决方案

您可以将 Web Api 和 Angular 代码存储在同一个解决方案和项目中。

在这种情况下,您可以像这样安排结构:

内容 控制器 型号 脚本(带有 app/ 文件夹和供应商脚本,如 angular、jquery 等) 观看次数

index.html 用于 Angular 应用程序,您可以将其放入 Scripts/app 文件夹。 Angular 的所有视图都可以放入 Scripts/app/views 文件夹中。

使用 Grunt/Gulp

Grunt/Gulp/Cake/Broccoli - 这些工具只是一个 javascript 任务运行程序,它允许您执行各种操作,例如将供应商脚本合并到一个文件中,将您的脚本压缩并合并到一个文件中,将您的 LESS 转换为CSS 等

要使用这些任务运行器,您可以使用Project Build Events。在项目构建事件中,您可以运行 Grant/Gulp 任务,这将为您完成所有魔法。

还有一个名为 Task Runner 的 Visual Studio 扩展。此扩展允许您通过添加 Task Runner Explorer 窗口在 Visual Studio 中执行任何 Grunt/Gulp 任务或目标。

在 Visual Studio 项目中通过 Task Runner 使用 Gulp 的示例

要通过 Task Runner 自动运行 Gulp 任务,您需要在 gulpfile.js 的开头添加一行

/// <vs AfterBuild='<here is a name of your Gulp task>' />

此行将强制您的任务在每次重建项目后运行。

有用信息

要获取有关在 ASP.NET 上使用 AngularJS 的应用程序的更多信息,您可以查看 John Papa 的视频:“Building Rich Apps with AngularJS on ASP.NET

有用的 Gulp 模块:

gulp-useref - 解析 HTML 文件中的构建块以替换对未优化脚本或样式表的引用。 gulp-less - Gulp 少了。 gulp-uglify - 使用 UglifyJS 缩小文件。

【讨论】:

以上是关于如何设置 ASP.NET API / AngularJS 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何缩小此 ASP.NET ASMX 到 Exchange 2010 托管 API 设置中的故障点?

如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)

如何正确执行 RPC 样式的 Asp.Net Web API 调用?

ASP.Net Web API 的参数绑定[翻译]

如何在 asp.net core 2.1 中使用自定义消息设置状态代码?

ASP.NET web api - 设置自定义 IIdentity 或 IPrincipal