2016-09-23 70 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; 
    } 
}