我目前正在尝试一些有关利用服务器端渲染(SSR)的想法和概念。到目前为止,我已经着手使用NestJS,因为它可以让我使用PHP非常熟悉的MVC模式。但是,到目前为止,我了解到的一般用法是仅将HTML Shell发送给客户端,并向其提供其他数据(PWA)。
但是我想做的是在服务器上渲染我的内容,并在客户端到达那里时向客户端添加交互性-然后从那里拾取并继续渲染,就好像它是PWA。
到目前为止,我发现,诸如Vue和React之类的框架以及其他框架都具有名为.hydrate()
的方法,该方法的工作方式与常规.render()
相似,只是它需要现有的HTML和重复使用该方法将侦听器和处理程序附加到侦听器和处理程序,从而最大程度地减少了在客户端上呈现的需求。这确实在服务器上进行了更多工作,但在客户端上却减少了“直到内容的时间”。另外,它为不具备JawaScript抓取功能的搜索引擎(如Google)保留了很多SEO功能。
但是,如果满足以下条件,似乎只能补水-如果我做错了,请纠正我-
为此,我必须“基本上”编写针对服务器的应用程序,就像它是客户端一样,然后配置WebPack-或任何其他捆绑程序-为客户端构建几乎相同的应用程序,减去服务器处理(HTTP内容)。
但这是真的吗?实际上是否可以动态构建页面,将其发送给客户端,然后让客户端从那里接管,甚至可以进行任何其他渲染的地方?
为演示我想做什么,请考虑以下事件流:
/foo
。 (HTTP/1.1 GET /foo
)<body>
的内容。client.js
的引用。client.js
。client.js
中的组件来混合服务器发送的HTML文档的内容。/bar
的链接。/bar
的请求。但是,不是返回另一个完整的HTML文档,而是只发回部分(或只是JSON对象)。我想坚持使用NestJS,因为它是MVC概念。但是我想知道这种混合SSR / PWA经验的想法是否可行?
谢谢!