答:
首先:SPA的英文是single-page application ,整个项目中只有一个页面。其次,单页面的实现思路:就是在 Web 页面初始化时加载所有的 HTML、JavaScript 和 CSS,页面的内容的变化,靠动态创建dom。
也就是一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新请求(加载)或跳转;取而代之的是利用路由机制实现 HTML 内容的动态变换,UI 与用户的交互,避免页面的重新加载。
它的优点有三点:
第一点:用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染;
第二点:基于上面一点,SPA 对服务器的压力小;
第三点:前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;
它的缺点也有三点:
第一点:初次加载耗时多,为实现单页 Web 应用功能及显示效果,需要在加载页面的时候将 JavaScript、CSS 统一加载,部分页面按需加载;
第二点:前进后退路由管理,由于单页应用在一个页面中显示所有的内容,所以不能使用浏览器的前进后退功能,所有的页面切换需要自己建立堆栈管理;
第三点:SEO 难度较大,由于所有的内容都在一个页面中动态替换显示,所以在 SEO 上其有着天然的弱势。