【问题标题】:Angular 2 in dev and production with IIS and webpackAngular 2 在开发和生产中使用 IIS 和 webpack
【发布时间】:2016-09-23 14:46:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: iis angular webpack windows-authentication systemjs


    【解决方案1】:

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

    注意: Angular 2 路由(带有哈希)在 IIS 上可以正常工作。只需创建默认 URL 重写规则,它将所有请求重定向到 Angular 应用程序的 index.html 文件。规则会将所有请求重定向到 index.html,但所需的 js 文件和实际的 Angular 应用程序 URL(即 index.html 或 index.html#/{route-value})除外。

    EX:

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

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

    MVC 应用程序的 Ex Route:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢@Alexander Ciesielski,但是如果我不在 IIS 保护伞下开发,我该如何进行 Windows 身份验证??
      • 我不知道如何使用 IIS 进行开发,但如果这意味着通过 HTTP 进行身份验证,那么应该可以
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2018-06-04
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多