我已经根据文档(以及我在网上找到的示例)实现了Angular Universal服务器端渲染,并且可以看到它(按预期)正常工作。呈现初始页面所需的API端点都发生在服务器端,并且数据已通过transferstate传输到客户端。问题(或者可能是我误会了)是html没有在服务器端“呈现”。
我的意思是;网站加载客户端后,我会在屏幕上看到预期的所有数据。但是,如果我查看页面源代码,就会发现传输的数据在script标签内部,而所有html标签都是空的。
<body>
<ng-app ng-version="7.2.15"><default-layout-shell _nghost-sc0=""><app-title _ngcontent-sc0=""></app-title><div _ngcontent-sc0="" class="c-body flex-layout-5310" fxflex="" fxlayout="column"><router-outlet _ngcontent-sc0=""></router-outlet></div><!----><!----></default-layout-shell></ng-app>
<script type="text/javascript" src="runtime.7275e06f48d8f7974dd0.js"></script><script type="text/javascript" src="es2015-polyfills.372e85019e45b5229792.js" nomodule=""></script><script type="text/javascript" src="polyfills.d278c42f6df83350ad60.js"></script><script type="text/javascript" src="scripts.c21d5e3a7d1748ad8df9.js"></script><script type="text/javascript" src="main.0c70d781ebf571a3ab70.js"></script>
<script id="ng-cli-app-state" type="application/json">{all-my-data-is-here}</script>
</body>
我的期望是,实际的html将会已经提供给客户端的浏览器,并且json脚本数据已经插入到html标签中并且可以使用了。但事实并非如此?取而代之的是,必须在页面加载客户端后运行一些JavaScript并将数据插入html中。
我有些期望我可以完全禁用javascript,但仍然能够至少看到初始页面加载了所有期望的数据。那不正确吗?还是我可能错过了实现Angular Universal的某些部分?