27

Dust.js 等一些 javascript 框架声称它们也支持服务器端渲染(除了客户端渲染)。有人可以解释这是如何工作的吗?我的理解是 JS 总是在浏览器运行时执行。

4

4 回答 4

18

JavaScript 可以在使用Node.js等系统的服务器上运行。

关于Dust.js,一个模板引擎,它可以在服务器上生成超文本和 HTML,并将这些内容直接发送到客户端的浏览器。这通常用于避免由于浏览器需要瞬间通过 Dust.js 之类的框架填充视图的模板而导致临时空模板的闪烁。缺点是页面的加载时间会稍长一些,因为在将数据发送到客户端之前,必须在服务器上完成更多的工作。

查看这个问题,了解服务器端渲染的优缺点。必须在缓慢的后处理(需要用户的浏览器来完成工作)或缓慢的预处理(让服务器在用户看到任何东西之前完成工作)之间做出选择。

于 2013-04-23T15:39:43.970 回答
3

3个主要的渲染方法是:

客户端渲染 (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 允许您在同一个项目中选择性地混合 3 种主要呈现形式。它们也是市场上其他很好的解决方案,例如 Gatsby。

于 2020-10-13T19:50:35.957 回答
3

服务器端渲染是将 JavaScript 转换为静态 html 和 css。早期的 JS 倾向于最后加载以优化网站性能。但问题是它影响了搜索引擎优化。所以服务器端渲染成为解决这个问题的解决方案。

于 2019-03-13T15:35:28.153 回答
-1

服务器端渲染 (SSR) 在服务器端执行 JavaScript [SPA 应用程序]。

与在客户端执行 JavaScript 时的客户端呈现相反。

服务器端渲染是一种相对较新的技术/热力,它允许像 React 或 Angular 这样的 SPA 框架变得对 SEO 更友好。由于服务器上的额外工作,技术效率相当低。相反,创建 SPA(单页应用程序)然后在服务器上执行它,应该首先考虑创建多页应用程序。

SSR 术语在某种程度上是模棱两可和令人困惑的,因为有些人使用它来指代传统的多页面网站,例如那些基于 Wordpress 构建的网站,或者由服务器生成 HTML 页面的任何 PHP 或 Java 后端,有些人仅将其用于 SPA呈现在服务器上。

后者,恕我直言,“更正确”,因为它产生的混乱更少。

于 2021-02-18T13:39:24.827 回答