35

我最近一直在阅读一些关于整个客户端与服务器渲染的非常有趣的文章。

http://www.onebigfluke.com/2015/01/experimentally-verified-why-client-side.html

http://www.quirksmode.org/blog/archives/2015/01/angular_and_tem.html

http://tomdale.net/2015/02/youre-missing-the-point-of-server-side-rendered-javascript-apps/

现在我在客户端方面有点狂热,但是在阅读了这些文章之后,一些观点开始出现支持服务器端渲染,令我惊讶的是......要点是:

  • 1)您可以升级您的服务器,但不能升级您的用户设备- 这意味着,嗯,是的......可以控制服务器,所以如果它表现不佳,您可以选择升级/扩展。您不能强制用户升级他们的设备。

  • 2)第一次绘制与最后一次绘制- 现在在上面的experimentally verified...链接上,它显示用户第一次看到页面的时间(第一次绘制)以及用户何时可以 100% 使用页面(最后一次绘制)。现在从我能想到的用户看到页面时,他们的大脑需要一些时间来处理从视觉皮层到额叶皮层,然后到用户实际开始点击他/她的手指的前动皮层的信号,即当然,如果首先呈现 html,那么大脑在后台加载时有一些事情要处理(js 文件、绑定等)。

真正让我感动的是 twitter 报道人们客户端渲染的加载时间长达 10 秒,没有人应该经历过!这有点像是在说,“好吧,如果你没有足够好的设备,对不起,你只需要等待。 ”。

我一直在想,是否有一种同时使用客户端和服务器端模板引擎的好方法,并且客户端和服务器都使用相同的模板引擎和代码。在这种情况下,只需确定向客户端提供呈现的页面还是让客户端自己呈现它是恩人。

无论如何,如果您愿意,请分享您对我的说法和文章的看法。我全是耳朵!

4

2 回答 2

22

UPD:仅在您确实需要时才这样做

(4 年和 2 个同构的企业应用程序之后)

如果你需要做 SSR,没问题。如果您可以使用简单的 SPA - 使用它。

为什么这样?SPA更易于开发、更易于调试、更便宜且更易于运行。

开发和调试的复杂性是显而易见的。不过,我所说的“更便宜、更容易运行”是什么意思?好吧,你猜怎么着,如果 10K 用户试图在你的静态 HTML 网站(即构建的 SPA)同时打开你的应用程序,你甚至不会感觉到它。但是,如果您正在运行同构 web 应用程序,TTFB 会上升,RAM 使用率会上升,最终您将不得不运行这些集群。

所以,除非你被要求展示一些超低的 TTFB 时间(这可能会通过积极的缓存来实现),否则不要让你的生活过于复杂。

2015年的原始答案:

基本上,您正在寻找一个为前端和后端共享相同代码的同构 Web 应用程序。

同构 JavaScript

同时运行客户端和服务器端的 JavaScript 应用程序。同构 JavaScript 框架是 JavaScript 框架发展的下一步。这些新的库和框架正在解决与传统 JavaScript 框架相关的问题。

我敢打赌,这个人比我解释得更好

在此处输入图像描述

因此,当用户访问该页面时,服务器会呈现包含内容的整个页面。因此它加载速度更快,并且不需要额外的 ajax 请求来加载数据等。然后,当用户导航到另一个页面时,将使用单页应用程序的常用技术。

那么,我为什么要关心?

  • 旧浏览器 / 弱设备 / 禁用 Javascript
  • 搜索引擎优化
  • 一些页面加载改进

旧浏览器 / 弱设备 / 禁用 Javascript

例如,IE9 不支持 History API。因此,对于旧浏览器(如果用户也禁用了 javascript),他们只会像过去一样浏览页面。

搜索引擎优化

谷歌表示它支持 SPA,但 SPA 不太可能出现在谷歌搜索的顶部结果中,是吗?

页面速度

如前所述,第一页加载一个 HTTP 请求,仅此而已。

好的,所以

这方面的文章很多:

但我应该关心吗?

当然,这取决于你。

是的,这很酷,但是重写/调整现有应用程序需要做很多工作。如果你的后端是 PHP/Ruby/Python/Java/Whatever,我有坏消息要告诉你(这不一定是不可能的,但很接近)。

这取决于网站,您可以尝试收集一些统计信息,如果使用旧设备的用户比例很小,那不值得麻烦,所以为什么不...

让他们受苦

如果您只关心使用旧设备的用户,那么来吧,2015 年,如果他使用 IE8 浏览网站和 iPod Touch 2,那是您的用户的问题。例如,Angular 大约一年前在 1.3 中放弃了 IE8 支持,那么为什么不提醒用户他们需要升级;)

干杯!

于 2015-11-22T18:46:51.180 回答
-3

关于这个话题的所有对话都漏掉了一点。发送到客户端的字节。在服务器上呈现为 HTML 的页面要小得多。传输的字节越少对每个人都越好,无论是服务器还是客户端。我已经看到云站点的带宽成本,即使减少 10% 也可以节省大量资金。客户端 JS 页面总是很胖。

于 2016-04-22T17:19:37.030 回答