客户端与服务器端模板(哪个?)

K-SO的毒性在增加。

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

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秒的加载时间用于客户端渲染,没有人会经历过有点说,“ 好吧,如果您没有足够好的设备,对不起,您只需要等待。

我一直在想,没有同时使用客户端和服务器端模板引擎的好方法,以及客户端和服务器使用相同模板引擎和代码的好方法在这种情况下,只能弄清楚是为客户端提供呈现的页面还是让客户端自己呈现页面是有益的。

无论如何,如果需要,请分享您对我的观点和文章的看法。我全耳!

亚历山大·米哈申科(Alexander Mikhalchenko):

UPD:仅在确实需要时执行此操作

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

如果需要执行SSR,则可以。如果可以使用简单的SPA,请选择它。

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

开发和调试的复杂性显而易见。但是,“更便宜,更容易运行”是什么意思?好吧,猜猜是什么呢,如果1万用户尝试在您的静态HTML网站(即内置SPA)的同时打开您的应用程序,您什至不会感觉到它。如果您正在运行同构Web应用程序,则TTFB将增加,RAM使用率将增加,最终您将必须运行其中的一个集群。

因此,除非要求您显示一些超低的TTFB时间(这很可能是通过主动缓存),否则不要使您的生活变得过于复杂。

2015年的原始答案:

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

同构JavaScript

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

我敢打赌,这家伙向解释得更好

在此处输入图片说明

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

所以,我为什么要关心?

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

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

例如,IE9不支持History API。因此,对于旧版浏览器(如果用户也禁用了javascript),它们将像浏览旧版一样浏览整个页面。

搜索引擎优化

Google说它支持SPA,但是SPA不太可能出现在Google搜索的顶部结果中,对吗?

页面速度

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

好啦

关于这一点有很多文章:

但是我应该照顾吗?

当然,这取决于您。

是的,这很酷,但是重写/调整现有应用程序需要花费大量工作。而且,如果您的后端位于PHP / Ruby / Python / Java / Whatever中,那么我对您来说是个坏消息(不一定是不可能的,但很可能是这样)。

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

让他们感到沮丧

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

干杯!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在哪里运行复杂算法?服务器端还是客户端端?

分页:服务器端还是客户端?

JSP到底在哪里运行?在客户端还是服务器端?

WPF客户端和Java服务器端?

如何模拟服务器响应-服务器端客户端

解析Django模型服务器端还是客户端端?

Mongodb服务器端与客户端处理

Firebase(客户端与服务器端)

在客户端上从客户端ASP.NET调用服务器端方法

服务器端验证何时运行?客户端验证何时运行?

如果我想要单独的Web API,但仍要运行服务器端,然后再运行到客户端,则应选择哪个项目模板?

Firebase,客户端服务器端与云功能服务器端

从服务器端生成的Firestore模拟器获取客户端React App

Java套接字服务器-客户端;卡在服务器端

Devexpress MVC扩展。这些扩展是服务器端还是客户端端?

asp.net/javascript创建cookie,创建客户端或服务器端的优势?

php的服务器端关联数组到html的客户端端

MVC Razor是否在客户端或服务器端的视图中为模板生成HTML?

Facebook身份验证:服务器端与客户端。Python / Django

客户端服务器端模板nodejs

我想要客户端侧面分页/排序吗?在jqgrid的服务器端搜索?

[symfony] [backbone]客户端和服务器端使用相同的模板

在客户端委派服务器端验证

Auth0解耦的客户端/服务器端

降价解析器应该是客户端还是服务器端

客户端数据到服务器端

构建 HTML 客户端 VS 服务 HTML 服务器端?

在服务器端处理完成之前,客户端没有任何变化

如何调用客户端-服务器端渲染和静态生成渲染