什么是javascript的服务器端呈现?

时间:2013-04-23 15:33:31

标签: javascript rendering client-side dust.js

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

4 个答案:

答案 0 :(得分:17)

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

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

查看this question了解服务器端rending的优缺点。必须在慢速后处理(要求用户的浏览器完成工作)或减慢预处理(使服务器在用户看到任何内容之前完成工作)之间做出选择。

答案 1 :(得分:2)

三种主要的渲染方法是:

客户端渲染(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)等其他好的解决方案。

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

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

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

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