服务器端在ASP.NET中使用Edge.js呈现Angular 2

Nic*_*tby 13 asp.net-mvc edge.js angular-universal angular

我正在探索在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-普遍

Sha*_*dow 0

您可以使用 Microsoft 的 SpaServices 包。在内部,此包会将调用转发到节点服务器,但您不必在 ASP.NET Core 服务器上运行节点。

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");
}
});
Run Code Online (Sandbox Code Playgroud)

在文档中查看更多信息:https://learn.microsoft.com/en-us/aspnet/core/client-side/spa/angular ?view=aspnetcore-2.1&tabs=visual-studio#drawbacks-of-ssr