我创建这篇文章是为了从社区中获得一些见解。不久前,随着 .NET Core 3.0 的发布,众所周知且广泛使用的用法spa.UseSpaPrerendering已被标记为过时。
大约在 2019 年初,我在一个使用 Angular 但需要 SEO 和更好的加载性能的项目中使用 .NET Core 实现了 SSR。
1 年后(现在,2020 年初),他们希望在不同的项目中也有同样的情况。但它已经使用了 Core 3.1。我们立即注意到了 Depricated 标志,所以我开始寻找自己做的方法。
根据过去的经验,SSR 问题有两部分,第一部分是让您的 Angular 应用程序能够在服务器端实际运行。因此,摆脱或解决所有无法在服务器端执行的东西(解决窗口 API 的使用,通过在 Angular 中使用 isPlatform 东西)。第二部分是实际让 .NET Core 启动 Angular CLI 以开始实际的预渲染。这是使用UseSpaPrerendering.
分析告诉我们自己解决问题的文档并检查我过去的代码,事情实际上开始变得有意义了。
我查看了 package.json 文件中的命令,执行的 2 个主要命令build:ssr实际上是预编译浏览器/... 文件旁边的整个 server/main.js。第二个命令是serve:ssr,它将由UseSpaPrerendering代码执行(至少这是我的假设)。
在实践中,我们的 CI/CD 将执行build:ssr并发布所有文件到运行 .NET Core 运行时的应用服务器。并使用UseSpaPrerendering代码然后执行serve:ssr.
现在跳到我需要找到解决方案的现在。我想我也可以自己运行必要的命令。所以在我的 Angular 中排除了一些非 SSR 兼容的代码后,我自己运行了build:ssr命令,然后是serve:ssr命令。效果很好,我的 Angular 应用程序是 …