使用单页应用程序(SPA)时如何在不刷新浏览器的情况下处理过期文件?

Ism*_*ael 16 angularjs single-page-application

我使用Angularjs完成了一个完整的单页面应用程序(SPA)应用程序.

到现在为止还挺好.

众所周知,所有javascript文件都是在第一次访问时加载的.或者,某些文件在需要时以惰性模式加载.

到现在为止还挺好...

情况是:服务器更新所有文件(html partials,javascripts,css),客户端仍然有很多文件过时.

这将简单地解决刷新浏览器,点击F5键,控制+ f5或浏览器中的刷新按钮.但是在使用SPA时这个概念并不存在.

我不知道如何解决这个问题.

我可以以某种方式检测(可能执行ping操作)并只是重新加载该特定文件.使用document.write策略.但现在又出现了另一个问题,我有一个javascript文件,所有javascript都缩小了.

我可以尝试在浏览器中强制完全重新加载或强制重新登录(并重新加载,因为登录是SPA部分).

但重新加载是一个丑陋的解决方案,想象客户端丢失表单中的所有数据,因为他不幸的是服务器刚刚更新.更糟糕的是,我现在必须创建一些"自动保存"功能正因为如此.

如果可能的话,我不知道如何处理这个问题,以"角度方式"进行.

我想知道google gmail是如何处理这个的,因为我在没有记录的情况下保持记录很多个小时.

jjp*_*aga 0

单页应用程序是控制应用程序客户端逻辑的单个堆栈。因此,通过应用程序完成的任何导航都应由客户端处理,而不是由服务器处理。目标是拥有一个单一的“胖”HTTP 请求来加载您需要的所有内容,然后执行小型 HTTP 请求。

这就是为什么您的应用程序中只能有一个ng-app。您不应该拥有多个模块,而只需加载您需要的模块(尽管 AngularJS 团队希望这样做)。在所有情况下,您都应该提供相同的缩小文件并处理应用程序中的所有内容。

在我看来,你更担心的是你的申请状态。正如 Tom Dale (EmberJS) 在上一篇 Cage Match 中所描述的那样,我们的目标应该是让应用程序能够在任何时间点在服务器和客户端之间反映相同的数据。您有多种方法可以做到这一点,可以通过 cookie、会话或本地存储。

通常,SPA 与基于 REST 的服务器进行通信,从而对数据执行幂等操作。

tl;dr 您不应该从服务器刷新任何内容(例如样式或脚本),而只能刷新应用程序正在处理的数据。初始单次加载就是 SPA 的全部内容。

  • 这一切都很好,但是当 CSS 文件更新时你会做什么?角度控制器 (.js) 文件是否已更新?如何通知客户应用程序的新版本已部署并且需要进行全面刷新? (2认同)