我试图了解使用 aspnet 核心时使用 vuejs 进行服务器端渲染的用法和限制。
我使用这个用于 aspnet 核心和 vuejs 的入门工具包来设置一个简单的 vue 站点,该站点基于此处的代码运行:https ://github.com/selaromdotnet/aspnet-vue-ssr-test/tree/master
然后我修改了项目以更新 aspnet-prerendering 并添加了 vue-server-renderer,编译了一个大杂烩来拼凑这个更新:https ://github.com/selaromdotnet/aspnet-vue-ssr-test/tree/ ssr
如果我运行这个项目,该站点似乎可以正常加载,并且如果我关闭浏览器中的 javascript,我可以看到服务器端渲染似乎已执行并填充了 html 结果:
然而,由于 JavaScript 被禁用,内容并没有被移动到 dom 中,因为它看起来正在尝试......
我对服务器端渲染的理解是,它将完全填充 html 并向用户提供完整的页面,这样即使 JS 被禁用,他们至少也能够看到该页面(特别是用于 SEO 目的)。我不正确吗?
现在我相信现代搜索引擎会执行这样的简单脚本来获取内容,但是如果禁用 js,我仍然不希望呈现空白页面......
这是服务器端渲染的限制,还是特别是带有 vue 和/或 aspnet 核心的 ssr?
还是我只是在某处错过了一步?
编辑:更多信息
我查看了源代码,我认为这是在此处预呈现该部分的方法:https ://github.com/aspnet/JavaScriptServices/blob/dev/src/Microsoft.AspNetCore.SpaServices/Prerendering/PrerenderTagHelper.cs
线
output.Content.SetHtmlContent(result.Html);
result.Html 的值为空。但是,当我手动编辑此值以放置测试值时,它也不会呈现到输出 html,并且 app div 标签仍然为空...
如果我在使用预期输出填充 result.Html 值时做错了什么,那是一回事,我会很感激这样做的一些帮助,特别是因为似乎找到了输出 html,因为它在脚本中立即跟随...
但是,即使我要填充它,它似乎也被跳过了,正如我手动更改值所证明的那样。这是代码中的错误还是我做错了什么,或者两者兼而有之?