自动刷新基于ASP.NET Core的Angular 2应用程序更改的浏览器

时间:2017-01-23 17:25:59

标签: angular visual-studio-2015 asp.net-core asp.net-core-1.1

我最近开始在ASP.NET Core中使用Angular 2。我使用Webpack来摆脱SystemJs的自动加载混乱,这导致我的应用程序在Angular中为hello world加载了可怕的400 js文件。我发现WebPackTaskRunner用于在Visual Studio中集成Webpack。使用this文章,我配置了VS,以便在项目加载时启动Webpack观察程序。

这个工具包允许我使用CTRL + S更改我的Angular 2应用程序,几秒钟后编译脚本,我可以在浏览器中刷新它。我想自动执行此操作,以便当某些js文件发生更改时,浏览器会自行刷新。发现这可以使用webpack-dev-server完成。它们的问题是:它启动另一个网络服务器(例如在端口8080上)并且我的所有路由都被破坏了。

例如,我想从 Users / GetAll 获取数据,通常这是在调试服务器(http://localhost:5000/api/Users/GetAll)上。由于应用程序使用webpack devserver在localhost:8080上运行,因此应用程序尝试请求http://localhost:8080/api/Users/GetAll,因为它没有ASP.NET Core Web服务器,所以它肯定无法工作。要解决这个问题,我必须指定一个基本网址。我需要启动两个Web服务器(ASP.NET Core和Webpack dev)

使用ASP.NET Core和Visual Studio在Angular 2中进行实时刷新的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

WebPack捆绑您的Angular 2应用程序并在开发过程中轻松自如,因为它会监视项目目录中的文件更改。它运行在一个新的轻量级http服务器上,以便在浏览器中显示您的应用程序。

你应该为你的ASP.NET Core打开CORS,它将与在不同域中运行的Angular 2应用程序一起使用,因为你遇到了localhost:8080到localhost:5000的问题。

Enabling Cross-Origin Requests (CORS)

此外,您应该将服务的URL放在某个地方,您可以为每个人更改一次,而不是在需要执行http调用的任何地方进行硬编码。此文件应包含您拥有的每个环境的URL,例如:Development,Staging和Production。您可以配置WebPack以根据构建参数选择URL。

AngularClass/angular2-webpack-starter