使用IIS和webpack在开发和生产中使用Angular 2

时间:2016-09-23 14:46:33

标签: iis angular webpack windows-authentication systemjs

我正在构建一个与webapis通信以获取数据的Angular 2 Web应用程序,该应用程序将通过Windows身份验证托管在IIS上,我有一些问题:

  1. 我应该使用system.config作为Angular 2的主要示例吗? 如果是这样,那么生产怎么样?我怎么和sass一起工作?
  2. 我应该使用webpack作为angular-cli吗?如果是这样,我如何结合webpack Dev服务器的优点(热重载,sass trans-pilers等) 和Windows身份验证的IIS托管?
  3. 很抱歉,如果这些问题无关紧要,但我是.NET开发人员,也是Angular 2和Webpack的新手。

2 个答案:

答案 0 :(得分:2)

您可以使用angular-cli开发角度2 app。要在IIS上生产部署应用程序,您可以使用: 来自angular-cli命令提示符的ng-build --prod命令来构建应用程序。这将生成在dest文件夹中部署所需的文件。这些只是您的应用使用的HTML,javascript,css和其他资源。 您可以复制dest文件夹的内容并部署在IIS Web应用程序的文件夹中。

注意: Angular 2路由(使用哈希)在IIS上没有任何问题。只需创建默认的网址重写规则,该规则会将所有请求重定向到您的角应用的index.html文件。规则会将所有请求重定向到index.html,但必需的js文件和实际的角度应用网址除外(即index.html或index.html#/ {route-value}。

EX:< rules> < rule name ="默认"> < match url ="(。*)。js | index.html(。*)"否定="真" /> < action type ="重写" URL =" /index.html" /> < /规则> < /规则>

Angular 2路由(没有哈希)不适用于IIS。在纯HTML应用程序的情况下,IIS将路由传入请求,如果该位置不存在,则它会将请求重定向到错误页面。

如果是.Net MVC应用程序,您可以创建一个默认路由来处理所有传入的请求URL并将其重定向到您的角度索引视图。

MVC申请的前路:

routes.MapRoute(
    name: "Angular",
    url: "{*url}",
    defaults: new { controller = "Home", action = "Index", id =     UrlParameter.Optional },
    constraints: new { url = new AppFeatureUrlConstraint() }


public class AppFeatureUrlConstraint : IRouteConstraint
    {
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
    if (values[parameterName] != null)
    {
        var url = values[parameterName].ToString();
        if (url.StartsWith("angular/", StringComparison.InvariantCultureIgnoreCase))
            return true;
        else
            return false;
    }
    return false;
    }
}

答案 1 :(得分:0)

我推荐带有webpack的Angular cli。它已经集成了热模块重新加载,并具有开箱即用的开发和生产环境,具有捆绑和树摇动功能。