Angular是目前最受欢迎的单页应用(SPA)框架之一。本文的目标读者是希望学习Angular的.NET开发者。将从如何在Visual Studio 2017中设置Angular环境开始,逐步介绍Angular的所有特性。
自从Angular首次推出以来,它已经经历了很多变化。最初版本的AngularJS是一个简单的JavaScript框架,它允许开发者通过额外的属性来扩展HTML DOM元素以执行用户操作。早期,只需要引用一个JS文件就可以在任何项目中使用AngularJS。后来,Angular推出了2.x版本,这是一个完全不同的架构。最近,Angular发布了6.x版本,它继承了从Angular 2开始的相同架构,并增加了额外的特性和功能。
现在,不能仅仅通过引用一个文件来使用Angular,因为模块化的原因,这是好事。无论想要使用哪个模块,都可以导入并在该组件中使用。
在本节中,将在Visual Studio2017中设置Angular环境。由于Angular与ASP.NET Core配合得很好,它已经提供了中间件、类和方法来应对SPA框架,将使用这些。已经安装了最新的.NET Core SDK 2.1。如果已经安装了.NET Core SDK 2.0,那么没有必要再安装,但是最好升级。
一个先决条件是,机器上应该安装了Node.js和Typescript,以便安装Angular的包并稍后运行。
让从在Visual Studio中创建一个项目开始。在这里选择了Web API项目,这样就得到了一个没有视图或预先设置的空项目。在添加Angular 6之前,请尝试构建解决方案,以确保一切都正常工作,并且没有任何依赖项问题。
现在,让通过Angular CLI将Angular 6应用程序添加到这个项目中。为此,请打开命令提示符并导航到创建项目的文件夹。在例子中,添加到了BookStore文件夹,所以可以在此处运行命令来安装Angular CLI。
npm install -g @angular/cli
安装Angular CLI后,现在让安装Angular。确保在运行命令时,位于拥有.csproj文件的同一位置。
ng new ClientApp
命令成功运行后,将看到如下所示的解决方案。
为了成功运行应用程序,需要在C#代码中做一些更改。
添加中间件以支持.NET Core App中的SPA。为此,请打开Startup.cs并注册SPA服务,该服务可以提供静态文件以供单页应用程序(SPA)使用。因此在ConfigureServices方法中添加以下内容:
services.AddSpaStaticFiles(c => {
c.RootPath = "ClientApp/dist";
});
c.RootPath = "ClientApp/dist"定义了所有的静态文件将被放置的位置。现在问题出现了:如果已经有了wwwroot,它意味着在.NETCore中持有静态文件,为什么需要这个路径。这个话题将在稍后在系列中到达最终构建和部署步骤时被捕捉。
在此之后,为了支持SPA文件,.NET Core提供了中间件,必须在Configure方法中添加这些:
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc(routes => {
routes.MapRoute(name: "default", template: "{controller}/{action=index}/{id}");
});
app.UseSpa(spa => {
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment()) {
spa.UseAngularCliServer(npmScript: "start");
}
});
这将确保所有静态内容都将从ClientApp文件夹加载。
由于从VS 2017创建了一个API项目,需要更新Properties/launchSettings.json中的启动设置。删除启动URL键值对:
"launchUrl": "api/values"
,然后保存文件。
如果在IE10或IE 11上运行应用程序,可能会在vendor.js或polyfill.js上遇到错误。
为了克服这个问题并在IE 10、IE 11上运行,更喜欢这样做,因为它有助于轻松调试。转到polyfills.ts文件,并取消注释与IE相关的部分。
是时候最终构建并运行应用程序了。让看看会发生什么:
哇!它工作了。
在本文中,学习了如何在Visual Studio2017中的ASP.NETCore应用程序中设置Angular。在IE浏览器上运行应用程序时遇到了一个问题,必须识别并更新polyfills.ts。这是与Angular一起开始旅程的第一步。已经准备好了环境,现在,将在下一篇文章中继续了解和创建一个基本的Angular应用程序。