我已经在我的个人单页应用程序中为javascript创建了一个框架,并且正在尝试向其添加堆叠页面功能。在SPA中堆叠页面,好主意还是不好?
如果您曾经使用过android,您已经看到在android中创建的每个新活动或页面都会将前一个活动或页面推回到一个用户按下后退按钮后可以访问的堆栈中,就像历史在浏览器中。
唯一的区别是,在android中,已经推入堆栈的页面停留在那里,直到操作系统用完RAM或其他东西,但是在浏览器中,无论如何页面都会被销毁。
现在,在我的框架中,我想出了一个非常简单的方法来将页面保存在内存中,以便当用户按下后退按钮时,而不是从服务器加载数据,我只是在堆栈中找到页面,它存在,我只是把它放在前面,并将当前页面推回到堆栈。
但也存在一些问题,用这种方法:
如果保持堆叠网页的JavaScript变量,或者你把它放在DOM,只是使显示:无;应用于它的样式,将它带到前面并使其可见,需要再次绘制整个页面,并且如果页面太大,这意味着很多过程并使页面之间的转换非常缓慢,特别是如果您有一些动画正在在页面转换时。
如果堆叠的页面可见,并且只是使用z-index推回,那么滚动将导致问题,因为前面页面的滚动仍然可用。如果你让页面溢出:隐藏;那么如果您堆叠多个页面,则滚动会变得非常缓慢且不连贯,因为浏览器必须滚动多层被绘制的页面。
所以我的问题是,这是堆栈页面这些问题甚至是一个好主意? 还是只是不是意味着在浏览器中发生?
哪个JS框架你使用? – pmverma
为什么你不能只使用HTML5历史API? – Claies
这是我自己创建的自定义框架。 –