Node.js express,哪种方法更快:服务器端渲染与客户端渲染

Node.js express,哪种方法更快:服务器端渲染与客户端渲染,node.js,mongodb,reactjs,Node.js,Mongodb,Reactjs,我想知道的是,您是如何构建web应用程序的?我真的很困惑,我该用哪种方法来完成我的项目 已经决定选择哪种技术 1) Node.js和express作为其框架 2) 蒙哥达 3) 反应+通量 但是现在的问题是,我应该使用方法(A)还是方法(B) 方法(A)-用于HTML的服务器端呈现 app.get('/users/', function(request, respond) { var user = "Jack"; respond.render("user", { user:

我想知道的是,您是如何构建web应用程序的?我真的很困惑,我该用哪种方法来完成我的项目

已经决定选择哪种技术

1) Node.js和express作为其框架

2) 蒙哥达

3) 反应+通量

但是现在的问题是,我应该使用方法(A)还是方法(B)

方法(A)-用于HTML的服务器端呈现

app.get('/users/', function(request, respond) {
     var user = "Jack";
     respond.render("user", { user: user });
});
 app.get('/users/', function(request, respond){ 
       var user = "Jack";
       respond.json({ user: user });
    });
方法(B)-用于HTML的客户端呈现

app.get('/users/', function(request, respond) {
     var user = "Jack";
     respond.render("user", { user: user });
});
 app.get('/users/', function(request, respond){ 
       var user = "Jack";
       respond.json({ user: user });
    });
方法A将呈现来自服务器和数据的HTML

方法B只响应客户机React.js所需的数据,以便它可以操作数据

我关心的是,我应该使用哪种方法?大多数初创公司使用哪种方法


谢谢。

这不是非此即彼的建议

React是一个客户端框架。您必须在客户端进行渲染。问题是除了在客户端渲染之外,是否还要在服务器端渲染

答案是什么?如果可以的话,是的

通过在服务器端渲染,您将获得SEO好处和初始性能提升。但是您仍然需要执行相同的客户端渲染

我建议谷歌搜索“同构反应”并阅读。这里有一篇关于这个主题的文章。

嗯,这实际上取决于你对现代网络的看法,以及你愿意做什么

您是希望让用户等待,在异步加载数据时显示加载程序,还是希望让用户尽可能长时间地忙碌

下面是一些不同的文章,它们将帮助您理清思路,并了解服务器端渲染和客户端渲染的不同优点

你可以在Twitter博客上看到这篇文章,说他们通过将呈现移动到服务器,将初始页面负载提高了1/5,与之前相比:

另一篇文章,这次来自airbnb,描述了客户端渲染本身可能存在的问题:

还有一篇有趣的文章讨论了客户端/服务器端渲染,引发了关于何时应该使用/不使用服务器端或客户端渲染以及为什么要使用的争论:

最后,我可以为您提供两个更关注react的链接,并描述服务器端呈现对您的案例有帮助的方式:

现在,关于你应该做什么,我认为这是你到底需要做什么的问题,但基本上,你可以同时做这两件事(客户端和服务器端),以获得最佳的用户体验


这一概念被称为“同构javascript”,近年来它越来越流行。

最简单的体系结构就是在服务器上进行动态html呈现,不使用Ajax,并且几乎任何客户端点击都需要一个新的html页面。这是一种“传统”方法,有其利弊

下一个最简单的方法是向客户端提供完全静态的html+js+css(您的React应用程序),并对webservices进行XMLHttpRequest调用以获取所需的数据(即方法B)

最复杂但最理想的方法(从性能和SEO角度)是构建一个支持这两种方法的“同构”应用程序。其思想是,服务器进行客户端将进行的所有必要的WS-Call,并呈现用户访问过的初始页面(可能是应用程序的深层链接部分),有点像选项a,但使用React进行呈现,然后将控制权传递给客户端以备将来的DOM更新。然后,当用户交互时,这允许通过web服务调用对页面进行快速增量更新(例如,就像B一样)。此时,不同“页面”之间的导航涉及使用历史API使其看起来像是在更改页面,而实际上您只是在使用web服务操作当前页面。但是当您进行浏览器刷新时,服务器将返回当前页面的完整HTML,然后再将控制权传递给客户端。在线上有很多React+Flux+Node这种方法的示例,使用支持服务器端渲染的不同风格的Flux


这种方法是否值得取决于你的情况。开始使用方法B(您可以在移动应用程序和网站之间共享您的HTTP API)可能是有意义的,但要使用支持服务器端渲染的Flux体系结构,并记住这一点。这样,如果您需要提高初始页面加载的性能,您就有办法做到这一点。

如果您要使用React构建应用程序,您应该遵循流量模式。Woops,没有阅读标题上的Express。不太熟悉Express,因此可能会有所不同。一般来说,最好在客户端渲染更多,在自己的服务器上渲染更少。但是在客户端只能呈现这么多内容,如果不指定启动类型,就很难回答您关于大多数初创公司的问题。如果您进行客户端呈现,则需要为搜索引擎的服务器端呈现(相同内容)执行并行路径。客户端呈现更具可扩展性(因为它使用客户机CPU进行一些工作,并且可能会进行更高效的模板缓存),并且可能比慢速链接更快(下载更少)。如果服务器速度快、负载轻且链接速度快,则服务器端呈现可能会与速度竞争。与您的情况相反的一个可能参数:。您的性能也可能完全取决于您实现客户端模板的方式。是的,我想是这样,从您实际实现客户端呈现的多种不同方式来看ng或“同构”应用程序。我阅读了您共享的大多数链接,它是