Javascript 单页应用:优缺点

Javascript 单页应用:优缺点,javascript,architecture,client-side,single-page-application,Javascript,Architecture,Client Side,Single Page Application,我读过关于SPA和it优势的书。我发现大多数都不令人信服。有三个优点引起了我的怀疑 问题:你能作为SPA的倡导者,证明我对前三种说法是错误的吗 1。SPA非常适合反应灵敏的网站: 对于所有中间层,服务器端渲染都很难实现 状态-小视图状态无法很好地映射到URL 单页应用程序的特点是能够重新绘制任何部分 无需服务器往返即可检索HTML。这 通过以下方式将数据与数据表示分离来实现 具有处理数据的模型层和读取数据的视图层 从模型上看 为非SPA保留模型层有什么问题?SPA是否是客户端唯一与MVC兼容的体

我读过关于SPA和it优势的书。我发现大多数都不令人信服。有三个优点引起了我的怀疑

问题:你能作为SPA的倡导者,证明我对前三种说法是错误的吗

1。SPA非常适合反应灵敏的网站:

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

单页应用程序的特点是能够重新绘制任何部分 无需服务器往返即可检索HTML。这 通过以下方式将数据与数据表示分离来实现 具有处理数据的模型层和读取数据的视图层 从模型上看

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


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

哈,用户在访问您的站点时可以下载多少页面?二,三?相反,会出现另一个安全问题,您需要将登录页面、管理页面等分离到单独的页面中。反过来,它与SPA架构冲突

3.可能还有其他优势吗?别再听别人说了。

  • 客户端必须启用javascript
  • 只有一个站点入口点
  • 安全

  • p.S.我参与过水疗和非水疗项目。我问这些问题是因为我需要加深我的理解。无意伤害水疗支持者。不要让我读更多关于水疗的书。我只想听听你对此的看法。

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

    1。SPA非常适合反应灵敏的网站:

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


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

    用户访问我的网站时下载的页面数??当一些人打开他/她的邮件帐户时,他/她会阅读多少邮件。我一次阅读超过50篇。现在邮件的结构几乎是一样的。如果您将使用服务器端呈现方案,那么服务器将在每次请求时呈现它(典型情况)。 -安全问题-您应该/不应该为管理员/登录保留单独的页面,这完全取决于您网站的结构(例如paytm.com)。创建网站SPA并不意味着您为所有用户打开所有端点,我的意思是我在我的SPA网站上使用forms auth。 -在可能最常用的SPA框架中,开发人员可以从web站点加载整个html模板,这样就可以根据用户的身份验证级别来完成。不需要为所有身份验证类型预加载html

    3。可能还有其他好处吗?别再听别人说了。

    • 现在,您可以放心地假设客户端将拥有支持javascript的浏览器
    • 该站点只有一个入口点。正如我前面提到的,状态的维护是可能的,您可以有任意数量的入口点,但您应该有一个确定的入口点
    • 即使是在水疗中心,用户也只能看到他拥有的适当权利。你不必一次注射所有的东西。加载diff html模板和javascript异步也是SPA的一个有效部分
    我能想到的优点是:

  • 呈现html显然需要一些资源,现在每个访问站点的用户都在这样做。此外,不仅渲染主要逻辑现在是在客户端而不是服务器端完成的
  • 日期-时间问题-我只是给客户端UTC时间是一种预设格式,甚至不关心我让javascript处理的时区。这是一个很大的优势,因为我必须根据从用户IP派生的位置来猜测时区
  • 对我来说,状态在SPA中得到更好的维护,因为一旦你设置了一个变量,你就知道它会在那里。这给人一种开发应用程序而不是网页的感觉。这通常对制作foodpanda、flipkart、amazon等网站有很大帮助。因为如果您不使用客户端状态,那么您将使用昂贵的会话
  • 网站肯定是非常有反应性的——我将举一个极端的例子,尝试在一个非SPA网站上制作一个计算器(我知道这很奇怪)
  • 评论更新


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

    另一种观点:除了你的网站,你的项目 是否涉及本机移动应用程序?如果是的话,你很可能会 从服务器(即JSON)向本机应用程序提供原始数据并执行以下操作 客户端处理来渲染它,对吗?所以有了这个说法,, 您已经在执行客户端渲染模型。现在问题来了 那么,为什么不在网站版本中使用相同的模型呢 你的项目是什么?有点不可能
                                  === ADVANTAGES ===
    
                                === DISADVANTAGES ===