在单页应用程序(如使用Angular 2的Web应用程序)中,我们使用路径管理到不同页面的导航。但是当在浏览器中刷新页面时,整个应用程序都会刷新。这会导致数据丢失(例如,从服务中检索的值)。
我知道我们可以将数据存储在localstorage / cookies中并在加载任何路由时使用该数据,但是在页面刷新或处理这种情况时是否有更好的方法来维护应用程序数据?
答案 0 :(得分:0)
除非应用程序不使用cookie或本地存储,否则无法在刷新后保留应用程序数据!你也可以使用会话变量来存储数据,但它会消耗内存并减慢应用程序的速度,所以,只存储重要的数据!它将在整个网站上提供! 可能是此解决方案可以解决您的问题:Maintaining Session through Angular.js
答案 1 :(得分:0)
除了这些api之外,您可以使用localstorage,sessionstorage和Cache,而不能将数据存储在浏览器中。
还有一种方法,但它涉及安全问题,如果您的数据很小而且不保密,则可以在URL中使用。
快乐编码
答案 2 :(得分:0)
您可以使用会话来保存有关日志记录(例如),本地存储或会话存储的数据,以保留小型重要数据,Cookie等。但在许多情况下,最好的解决方案是调用API并在SPA启动时从服务器获取所有必要的数据。如果您还没有听说过旋转变压器,我建议您查看一下:https://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html。它会阻止你的SPA呈现,直到获取所有重要数据,我真的很喜欢使用它,我认为它是Angular中客户端 - 服务器交互的重要部分。
答案 3 :(得分:0)
另一种选择是将持久化对象序列化为 json 并将其放入 url。
有这个函数 encodeURIComponent 来编码一个 json 对象,你可以用它把它放到 url 中。
当然,这不是最优雅的方式,但理论上你可以保留整个存储并在之后对其进行解码,但要小心。这可能会给您的应用程序带来安全问题。