一、定义区分
【1.1】单页应用
单页应用又称 SPA(Single Page Application)指的是使用单个 html 完成多个页面切换和功能的应用 。这些应用只有一个 html 文件作为入口,一开始只需加载一次 js,css 等相关资源 。使用 js 完成页面的布局和渲染 。页面展示和功能室根据路由完成的 。单页应用跳转,就是切换相关组件,仅刷新局部资源 。
【1.2】多页应用
多页应用又称 MPA(Multi Page Application)指有多个独立的页面的应用,每个页面必须重复加载 js,css 等相关资源 。多页应用跳转,需要整页资源刷新 。
二、模型示意图区分
【2.1】单页应用模型示意图
文章插图
【2.2】多页应用模型示意图
文章插图
三、单页面和多页面应用的区别
文章插图
四、单页应用原理
js会感知到url 的变化,通过这一点,可以用js动态的将当前页面的内容清除掉,然后将下一个页面的内容挂载到当前页面上,这个时候的路由不是后端来做了,而是前端来做,判断页面到底是显示哪个组件,清除不需要的,显示需要的组件 。这种过程就是单页应用,每次跳转的时候不需要再请求html文件了
五、单页应用开发中可能存在的问题
【单页应用和多页应用的区别】1、客户端支持 。目前测试中发现部分 APP 尚未支持 hash 方式的返回 。APP 测在 webview 的返回按钮上需要实现逻辑:如果不能后退,则关闭 webview;如果能后退,则后退 。
2、页面状态保留 。使用 react-router 时,切换页面不能保留页面的滚动高度 。页面关闭后,上个页面被销毁(执行了 componentWillUnmount ),用户如果在上个页面操作到了底部再做跳转,则返回后会重新回到顶部 。体验还是比不上 native,但是依然甩传统的页面跳转几条街 。
3、页面带参数 。原生的 query 参数应该在 # 之前,index.html?from=onlineSign#pageA 。但是 # 后还是可以有参数,index.html#pageA?from=onlineSign ,这里的参数在 location.query 或者 location.search 中拿不到,但是可以在 router 中拿到 。
推荐阅读
- 鸭肉可以和葡萄一起吃吗? 鸭肠不能和什么水果一起吃
- 了解 FreeDOS 中的文件名和目录
- 什么牌子的红茶比较好喝,普洱茶和红茶哪个好喝
- 乾隆的一生功与过?乾隆的功绩和过失
- 云之凡是仙剑第几部?仙剑云之凡姜云凡和谁在一起了
- 乌龟和玄武有什么区别?玄武到底是蛇还是龟
- 非洲水牛战斗力 非洲水牛和亚洲水牛谁厉害
- 人工智能与机器智能 人工智能机器人的应用
- 五白散的功效和作用,五宝茶的功效与作用
- 千日红花茶可以和什么搭配,桂花和什么茶搭配好