2016-09-23 59 views
0

我构建与webapis获取数据通信的角2的Web应用程序,该应用程序将在IIS与Windows身份验证托管和我有一些问题:角2在开发和生产与IIS和的WebPack

  1. 我应该使用system.config作为Angular 2的主要示例吗? 如果是这样,那么生产怎么样,我该如何与sass合作?
  2. 我应该使用webpack作为angular-cli吗?如果是这样,我该如何结合使用Windows身份验证的webpack Dev服务器(热重载,sass trans-pilers等) 和IIS托管的优势?

对不起,如果这些问题是无关紧要的,但我是一个.NET开发人员,也是Angular 2和Webpack的新手。

回答

0

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

+0

THX @Alexander西谢尔斯基,但我该怎么办Windows身份验证,如果我不是在IIS伞发展? –

+0

我不知道用IIS开发,但如果它意味着通过HTTP进行身份验证,那么它应该是可能的 –

1

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

注意: 角2路由(带散列)将在IIS上没有任何问题的工作。只需创建默认网址重写规则,将所有请求重定向到您的角度应用程序的index.html文件。规则将重定向所有请求,除了必需的js文件和实际的角度应用网址(即的index.html或index.html#/ {路由值}到index.html的

EX:<规则> <规则名称=”。默认“> < match url =”(。*).js | index.html(。*)“negate =”true“/ > < action type =”Rewrite“url =”/ index.html“/ > </rule > < /规则>

角度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; 
    } 
}