一些像Dust.js这样的JavaScript框架声称它们也支持服务器端渲染(除了客户端渲染)。那么,有人能解释一下它是如何工作的吗?我理解JavaScript总是在浏览器运行时执行。
一些像Dust.js这样的JavaScript框架声称它们也支持服务器端渲染(除了客户端渲染)。那么,有人能解释一下它是如何工作的吗?我理解JavaScript总是在浏览器运行时执行。
服务器端渲染是将JavaScript转换为静态的html和css。 以前,JS通常会在最后加载,以优化网站性能。 但问题在于这会影响SEO。 因此,服务器端渲染成为解决此问题的方法。
主要有三种渲染方法:
客户端渲染 (CSR)
是现代前端框架如ReactJS的默认渲染过程,服务器只返回一个几乎为空的index.html文件,然后用户浏览器使用Javascript加载和构建所有内容。
服务器端渲染 (SSR):
指生成HTML内容的服务器进程,根据每个请求按需执行。通常,您需要设置一个运行类似于Express或Next.js(使用NodeJS)的服务器,该服务器会在每个请求中呈现您的React应用程序,就像传统的PHP或Rails基于网站一样。
静态网站生成器 (SSG):
服务器端渲染和静态网站生成器都涉及为站点的每个URL生成HTML。不同之处在于静态渲染在构建时间仅发生一次,而服务器渲染是在用户请求每个文件时按需执行。
对于静态渲染,您需要预先为每个可能的请求生成响应。但是,如果您正在构建无法预测所有可能请求的内容,例如搜索页面怎么办?或者如果您有很多用户生成的内容,而且每个请求都会更改响应怎么办?在这种情况下,您需要服务器端渲染。
*** 那么应该使用哪个方法呢? ***
这取决于情况。
如果SEO不相关 - 例如在登录界面后运行的应用程序 - 那么CSR就可以了,您只需要像ReactJS一样的东西即可。
如果您需要良好的SEO:
a) 如果您可以预测内容(以便在构建时间生成它),则需要SSG并选择类似于NextJS的东西。
b) 如果无法预测内容/可能的请求,则服务器需要按需生成页面,因此需要SSR并选择类似于NextJS的东西。
注意:NextJS允许您有选择地混合同一个项目中的三个主要呈现形式。市场上还有其他好的解决方案,如Gatsby。
服务器端渲染(SSR)是在服务器端执行JavaScript [SPA应用程序]的过程。
与客户端渲染相反,客户端渲染是在客户端执行JavaScript的过程。
服务器端渲染是一种相对较新的技术/术语,它使得像React或Angular这样的SPA框架更加友好于SEO。由于服务器需要额外的工作,因此该技术效率相对较低。因此,有人应该首先考虑创建多页面应用程序,而不是创建单页面应用程序,然后在服务器上执行它。
SSR术语有些模糊和混淆,因为有些人将其用于传统的多页面网站,例如那些建立在WordPress上的网站,或者任何使用PHP或Java后端生成HTML页面的网站,而有些人仅将其用于在服务器上呈现的SPA。
在我看来,后者“更正确”,因为它会产生较少的混淆。