19

我正在探索在 ASP.NET MVC 应用程序中使用 Edge.js 在服务器端呈现 Angular 2 的可能性。

我知道 Angular Universal Starter Kit 包含这个等式的一部分:https ://github.com/alexpods/angular2-universal-starter

但是,它使用的是 Node.js 服务器。我宁愿不在现有的 IIS 服务器之上添加 Node.js 服务器作为额外的 Web 服务器。我的想法是我可以使用 Edge.js 在服务器端执行 Angular 的渲染(即运行必要的 JavaScript 来生成标记)。

我对 Angular 2 非常陌生,因此启动并运行一个示例对我来说并非易事。基于这个已关闭的问题,我想说目前没有努力增加对 Edge.js 的支持(尽管曾经考虑过):https ://github.com/angular/universal/issues/40

有人知道是否可以使用 ASP.NET MVC 应用程序中的 Edge.js 在服务器端渲染 Angular 吗?

顺便说一句,我被困在 .NET 4.5.2 上(Umbraco 需要它),所以我无法迁移到 .NET Core 并利用它:https ://github.com/MarkPieszak/aspnetcore-angular2-普遍的

4

1 回答 1

1

You can use SpaServices package from Microsoft. Internally this package will forward call to node server, but You won't have to run node on top of your asp.net core server.

app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";

spa.UseSpaPrerendering(options =>
{
    options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.bundle.js";
    options.BootModuleBuilder = env.IsDevelopment()
        ? new AngularCliBuilder(npmScript: "build:ssr")
        : null;
    options.ExcludeUrls = new[] { "/sockjs-node" };
});

if (env.IsDevelopment())
{
    spa.UseAngularCliServer(npmScript: "start");
}
});

See more in docs: https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular?view=aspnetcore-2.1&tabs=visual-studio#drawbacks-of-ssr

于 2018-08-30T21:19:57.293 回答