为 .NET MVC 项目构建/捆绑 Angular 2 应用程序

问题描述 投票:0回答:2

我目前在 .NET 4.6 项目中有一个 Angular '2' 应用程序。它工作得很好,但我对捆绑有疑问。 该应用程序是使用最新的 Angular CLI 创建的,我更喜欢用它来构建/捆绑该应用程序。根据我的经验,该捆绑包的 webpack 创建非常棒。

我的问题是,对于捆绑并在 .NET MVC 应用程序中使用此捆绑包,您有什么建议/想法吗? 我见过一些其他线程,其中开发人员使用了 gulp 文件来执行 ng build 命令,然后将此输出传输到另一个位置以供使用。

如有任何建议,我们将不胜感激。

托马斯

asp.net-mvc angular asp.net-mvc-5 angular-cli .net-4.6
2个回答
1
投票

我解决了这个问题。我已经实施了我认为是干净的解决方案。

对于任何有兴趣的人,我的答案如下:

  1. 在项目的根目录下有一个“Angular”文件夹,或者您想要选择的任何其他名称。

  2. 其中有 angular-cli.json 和 package.json 文件。

  3. 如果您稍后要创建一个 nuget 包以进行部署(很可能不会),则将 angular/src/app/tsconfig.json 中的“outDir”设置为“../out-tsc” 。这意味着您可以将“dist”文件夹添加到包中,而无需包含“out-tsc”文件夹。

  4. 您必须在用户帐户的 npm 文件夹中全局安装 Angular cli。运行 npm install -g @angular/cli 来执行此操作。

  5. 在 angular/src 级别有一个空白的 index.html。 (除非你特别需要添加一些东西)。

  6. 配置(.net 项目的)根 tsconfig 以排除“Angular”文件夹。

  7. 您需要在 .csproj 中设置预构建事件。这需要 cd 进入 Angular 目录,运行 npm install,然后运行 ng build(如果处于调试状态)或 ng build --prod(如果处于发布状态)。要确定您的项目是否处于调试/发布状态,宏是 $(ConfigurationName)。对于我的解决方案,我创建了一个 powershell 脚本,该脚本将 ConfigurationName 作为参数并运行 npm install 然后运行 ng build。我将此脚本作为 .csproj 中的预构建事件运行。您也可以在此处添加 Angular cli 的全局安装,但我跳过了这一点。

  8. 为了将捆绑的角度文件包含到 MVC 视图中,我使用了导入链接:

<link rel="import" href="/angular/dist/index.html">

这在 Chrome 以外的浏览器中不起作用,因此我在其上方添加了一个 Polyfill。这个polyfill来自webcomponentsjs:

<script async src="~/Scripts/polyfills/webcomponentsjs/lite.js" type="text/javascript"></script>
<link rel="import" href="/angular/dist/index.html">

结果视图:

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
}

 <app-root>Loading...</app-root>

<script async src="~/Scripts/polyfills/webcomponentsjs/lite.js" type="text/javascript"></script>
<link rel="import" href="/angular/dist/index.html">

现在,当您构建然后启动 .NET MVC 应用程序并转到此视图时,您的角度应用程序将出现。

亲切的问候


0
投票

我已经让您的解决方案一直有效到步骤#8。

它只是在视图上显示“正在加载...”。

和 似乎没有任何影响(如果我单击“查看源代码”中的超链接,它们都会存在)。我正在使用 Edge。

我错过了什么?

© www.soinside.com 2019 - 2024. All rights reserved.