当前位置: 首页 > 面试题库 >

单页应用程序:优点和缺点

邹誉
2023-03-14
问题内容

我已经读过SPA及其优势。我发现其中大多数令人信服。有3个优点引起了我的怀疑。

问题: 您可以担任SPA的拥护者,并证明我对前三个陈述有误吗?

                              === ADVANTAGES ===

1. SPA对于响应速度快的网站非常有用:

对于所有中间状态,很难实现服务器端呈现-小视图状态无法很好地映射到URL。

单页应用程序的特点是能够重绘UI的任何部分,而无需服务器往返来检索HTML。这是通过具有处理数据的模型层和从模型读取的视图层将数据与数据表示分离开来的。

为非SPA保留模型层有什么问题? SPA是否是客户端上唯一与MVC兼容的体系结构?

2.使用SPA,我们不需要对服务器使用额外的查询来下载页面。

嗯,在访问您的网站期间用户可以下载多少页? 二三?而是出现了另一个安全问题,您需要将登录页面,管理页面等分成单独的页面。反过来,它与SPA架构冲突。

3.可能还有其他优势吗? 什么都没听到

                            === DISADVANTAGES ===
  1. 客户端必须启用javascript。
  2. 该站点只有一个入口点。
  3. 安全。

PS
我曾经从事过SPA和非SPA项目。我问这些问题是因为我需要加深理解。无意伤害SPA支持者。不要让我多读一些有关SPA的文章。我只想听听您对此的考虑。


问题答案:

让我们看一下最受欢迎的SPA网站之一,GMail。

1. SPA对于响应速度快的网站非常有用:

服务器端呈现的难度不像使用简单技术(例如在URL中保留#hash或最近在HTML5中pushState保留)那样困难。通过这种方法,Web应用程序的确切状态将嵌入到页面URL中。与每次打开邮件一样,在GMail中,特殊的哈希标签会添加到URL。如果复制并粘贴到其他浏览器窗口,则可以打开完全相同的邮件(前提是它们可以进行身份​​验证)。这种方法直接映射到更传统的查询字符串,不同之处仅在于执行。使用HTML5pushState(),您可以消除#hash和使用完全经典的URL,它们可以在第一个请求上在服务器上解析,然后在后续请求上通过ajax加载。

2.使用SPA,我们不需要对服务器使用额外的查询来下载页面。

用户访问我的网站时下载的页面数?当他/她打开他/她的邮件帐户时,实际上阅读了多少邮件。我一口气读了>
50。现在邮件的结构几乎相同。如果您将使用服务器端渲染方案,则服务器将在每个请求(典型情况)下对其进行渲染。-安全问题-您应该/不应为完全取决于您网站结构的管理员/登录页面保留单独的页面,以paytm.com为例,例如,制作网站SPA并不意味着您为所有网站打开了所有端点。用户,我的意思是我在我的spa网站上使用表单身份验证。-在可能最常用的SPA框架Angular
JS中,开发人员可以从网站上加载整个html模板,从而可以根据用户身份验证级别来完成。为所有身份验证类型预加载html是“

3.可能还有其他优势吗? 什么都没听到

  • 这些天,您可以放心地假设客户端将具有启用了JavaScript的浏览器。
  • 网站的一个入口。正如我之前提到的,状态维护是可能的,您可以根据需要拥有任意数量的入口点,但是应该确定有一个。
  • 即使在SPA用户中,也只能看到他具有适当的权限。您不必一次注入所有东西。加载差异html模板和javascript异步也是SPA的有效部分。

我能想到的优点是:

  1. 现在,每个访问您网站的用户都在执行HTML渲染,因此显然需要一些资源。现在,不仅渲染主要逻辑都在客户端而不是服务器端完成。
  2. 日期时间问题-我只是给客户端提供UTC时间是一种预设格式,甚至不关心我让JavaScript处理的时区。这对于我不得不根据用户IP派生的位置猜测时区是一个很大的优势。
  3. 对我来说,状态可以更好地保存在SPA中,因为一旦设置了变量,便知道该变量将在那里。这给人一种开发应用而不是网页的感觉。这通常对制作类似foodpanda,flipkart,亚马逊之类的网站有很大帮助。因为如果您不使用客户端状态,那么您将使用昂贵的会话。
  4. 网站肯定是非常敏感的-我将举一个极端的例子,尝试在非SPA网站(我知道它很奇怪)中制作计算器。

评论更新

似乎没有人提到套接字和长轮询。如果您从另一个客户端(例如移动应用程序)注销,则您的浏览器也应该注销。如果不使用SPA,则每次重定向时都必须重新创建套接字连接。这也应与通知,个人资料更新等数据中的任何更新一起使用

另一种观点:除了您的网站之外,您的项目是否还会涉及本机移动应用程序?如果是,那么您很可能将从服务器(即JSON)向该本地应用程序馈送原始数据,并进行客户端处理以呈现它,对吗?因此,有了这个断言,您已经在做一个客户端渲染模型。现在的问题是,为什么您的项目的网站版本不使用相同的模型?毫无疑问。然后,问题就变成了是否只为了SEO的好处和可共享/可标记URL的便利性而呈现服务器端页面



 类似资料:
  • 主要内容:Tableau的优点,Tableau的缺点Tableau的优点 Tableau的优点如下 - 数据可视化: Tableau是一种数据可视化工具,提供复杂的计算,数据混合和仪表板,用于创建漂亮的数据可视化。 快速创建交互式可视化: 用户可以使用Tableau的拖放功能创建非常交互式的可视化。 实施舒适: Tableau中提供了许多类型的可视化选项,可增强用户体验。与Python相比,Tableau非常容易学习。对编码不了解的用户也可以快速学

  • 主要内容:动态网页静态或平面的网页是指一个网页,其中所有的信息和材料都存储在网页文件中。 静态网页向所有用户显示不太经常改变的信息和数据。 在互联网技术中,超文本标记语言(HTML)是人们开始创建静态网页的第一语言或渠道。 HTML提供了文本,段落创建和换行符的风格。 但HTML的最重要的功能和特点是链接创建选项。 静态网页对于他们的材料和内容很有用,而这些内容很少需要修改或更新。 静态网站的优势 快速开发 低价开

  • 本文向大家介绍ant-design优点和缺点?相关面试题,主要包含被问及ant-design优点和缺点?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 优点:组件非常全面,样式效果也都比较不错。 缺点:框架自定义程度低,默认UI风格修改困难。

  • 我的应用程序将是: -单页应用程序(例如在角度/主干中) -基于Spring MVC的服务器。 我发现了许多关于使用Spring-Security的示例,其中登录页面、注销页面等都是HTMLs。Spring Security根据会话状态定向到适当的页面。 但就我而言,登录/注销页面将使用JavaScript - 与服务器进行登录/注销的所有交互都是通过HTTP(REST样式URL和响应JSON)进

  • 问题内容: 现在RC1已经发布了,我需要一劳永逸地决定是使用MS Ajax库还是仅将jQuery用于AJAX请求。该应用程序是一个新应用程序。本质上,我将决定的方式是,我是否会从Microsoft库中获得任何我不会从jQuery中获得的 显着 收益。我已经加载了jQuery,并且我比其他任何事情都更加担心文件大小的额外开销。 据我所知- 唯一的好处是确实有像这样的助手,但是也许无论如何它们都可以在

  • 我想用javascript(网络技术)编程一个桌面应用程序,并寻找电子和Chrome应用程序之间的比较。 我所需要的一切似乎都可以通过Chrome应用程序实现,但围绕Electron/NW有一个很大的宣传。js。电子的优点是什么?这是由于大量的节点包造成的吗? 我认为功能差异对我来说很清楚。 赞成和反对意见如下: 正如爱德华多所指出的,谷歌宣布将停止ChromeOS以外所有平台的Chrome应用。