谈谈对 SPA 单页面的理解, 它的优缺点有哪些? 如何实现?

​ 当你的面试官问出这个问题的时候, 我们应该怎么去回答呢? 下面是鄙人整理的一些资料, 希望对你有用 !

分析面试官所问出的问题

​ 首先我们要分析面试官所问出的问题, 而不是先去回答问题, 这点很重要。你需要知道面试官想要得到的答案, 他一定是希望你有条理的、有层次的回答问题, 而不是毫无头绪的一通乱说, 虽然你认为你回答的还行, 但是面试官却是云里雾里的, 根本不知道你在讲些什么。

​ 一般我们可以从这四个方面去回答:

  1. What 这个东西是什么?
  2. why 我们为什么要用这个东西?
  3. How 我们应该怎么用这个东西?
  4. Where 这个东西在哪里用?

​ 这是主体部分, 其他的你知道的和这个东西可以产生对比的, 也可以说, 这样就更好了。做到逻辑清晰, 层次递进。

回答问题

​ 答: 关于 SPA 我会从以下三点来回答:

  1. SPA(single-page application)单页面应用,是一种网络应用程序或者网站的模型。通过动态重写当前页面与用户进行交互,根据需要动态装载相应的页面。我们所熟知的reactvueangular等等都属于 SPA。(what)

  2. 单页面应用的优缺点:

    • 优点:

      • 具有桌面应用的即时性、网站的可移植性和可访问性
      • 用户体验好、快、内容改变不需要重新加载整个页面
      • 良好的前后端分离,分工更加明确
    • 缺点:

      • 不利于搜索引擎的抓取
      • 首次加载不友好,速度相对较慢
  3. 实现一个 SPA (这个问题看自己发挥,就是看自己的语言组织能力)

    • 它的原理就是:①监听地址栏中 hash变化驱动界面变化;②使用pushstate记录浏览器的历史,驱动界面发送变化

    • 实现分为两种模式:①hash模式;②history模式

      • hash模式:核心就是监url中的hash来进行路由跳转

        // 定义 Router
        class Router {  constructor () {  this.routes = {}; // 存放路由path及callback  this.currentUrl = '';  // 监听路由change调用相对应的路由回调  window.addEventListener('load', this.refresh, false);  window.addEventListener('hashchange', this.refresh, false);  }  route(path, callback){  this.routes[path] = callback;  }  push(path) {  this.routes[path] && this.routes[path]()  }
        }  // 使用 router
        window.miniRouter = new Router();
        miniRouter.route('/', () => console.log('page1'))
        miniRouter.route('/page2', () => console.log('page2'))  miniRouter.push('/') // page1
        miniRouter.push('/page2') // page2
        
      • history模式:核心就是借用H5 history apiapi提供了丰富的router相关属性,例如:

        history.pushState浏览器历史记录添加记录

        history.replaceState修改浏览器历史记录中当前记录

        history.popStatehistory发生变化时触发

        // 定义 Router
        class Router {  constructor () {  this.routes = {};  this.listerPopState()  }  init(path) {  history.replaceState({path: path}, null, path);  this.routes[path] && this.routes[path]();  }  route(path, callback){  this.routes[path] = callback;  }  push(path) {  history.pushState({path: path}, null, path);  this.routes[path] && this.routes[path]();  }  listerPopState () {  window.addEventListener('popstate' , e => {  const path = e.state && e.state.path;  this.routers[path] && this.routers[path]()  })  }
        }  // 使用 Router  window.miniRouter = new Router();
        miniRouter.route('/', ()=> console.log('page1'))
        miniRouter.route('/page2', ()=> console.log('page2'))  // 跳转
        miniRouter.push('/page2')  // page2
        
  4. 回答时尽量描述的清楚一点,就是将代码转为文字表述。

总结

​ 面试时回答问题的公式就是:

  1. 关于 XXX 我会从以下 XX(尽量使用量词) 点来回答
  2. 它是什么?what
  3. 我们为什么要用它?why
  4. 我们怎么用它?how
  5. 我们在哪里用它?where
  6. 最后简单总结一下这个问题 conclusion

​ WWW H C

以上就是我的分享,希望对你有用。加油!希望所有的努力都不被辜负!!!

每日一句

Fortune favors the bold.

​ 好运眷顾勇者

SPA(单页面应用)的理解相关推荐

  1. [vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?

    [vue] 说说你对SPA单页面的理解,它的优缺点分别是什么? 介绍:SPA应用就是一个web应用,可理解为:是一种只需要将单个页面加载到服务器之中的web应用程序.当浏览器向服务器发出第一个请求时, ...

  2. (25):SPA单页面的理解

    对SPA单页面的理解,它的优缺点分别是什么,如何实现SPA应用 一.什么是SPA 1.SPA(single-page application),翻译过来就是单页应用 2.SPA是一种网络应用程序或网站 ...

  3. 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design

    通过Blazor使用C#开发SPA单页面应用程序(1) 通过Blazor使用C#开发SPA单页面应用程序(2) 通过Blazor使用C#开发SPA单页面应用程序(3) 前面学习了Blazor的特点.环 ...

  4. [vue] SPA单页面的实现方式有哪些?

    [vue] SPA单页面的实现方式有哪些? 1.监听地址栏中hash变化驱动界面变化2.用pushsate记录浏览器的历史,驱动界面发送变化3.直接在界面用普通事件驱动界面变化它们都是遵循同一种原则: ...

  5. SPA单页面应用首屏加载速度提升方法

    SPA单页面应用首屏加载速度提升方法 首屏加载 计算首屏加载时间公式 解决方法 减少入口文件体积 静态资源本地缓存 UI框架按需加载 避免组件重复打包 图片资源压缩 开启GZip压缩 首屏加载 首屏加 ...

  6. spa单页面应用html缓存问题

    一.背景 浏览器的http请求都有一个缓存机制,简单点说就是同路径同名文件会默认被缓存下来,提升下次访问时的速度,默认只有刷新页面或长时间未访问时才会刷新缓存. 而spa单页面应用是通过路由切换来访问 ...

  7. Java快速开发平台,JEECG 3.7.5 Vue SPA单页面应用版本发布

    JEECG 3.7.5 Vue SPA单页面应用版本发布 导读            ⊙ Vue+ElementUI SPA单页面应用 ⊙Datagrid标签快速切换BootstrapTable列表风 ...

  8. 当spa单页面应用遇上SEO,蛋痛的经历

    spa单页面应用优点当然毋庸置疑:效果酷炫,我在视觉和产品面前无从反驳:性能高速度快,全JS嘛当然快,我在运维和产品面前无言以对:运算分散,异步加载,又省硬件又省流量,我在开发和产品面前彻底投降:JS ...

  9. 通过Blazor使用C#开发SPA单页面应用程序(1)

    2019年9月23--25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Co ...

  10. SPA(单页面应用)和MPA(多页面应用)

    单页面应用 第一次进入页面时会请求一个html文件,刷新清除一下,切换到其他组件,此时路径也相应变化,但是并没有新的html文件请求,页面内容却变化了. 原理:js会感知到url的变化,通过这一点可以 ...

最新文章

  1. AD RMS高可用(三)部署RMS根群集服务器
  2. PHP扩展开发教程,通过实例来展示PHP的扩展开发和底层应用原理(C语言非zephir)...
  3. git 冲突覆盖_git pull冲突解决之强制覆盖
  4. 构造函数必须是public吗_c++ 构造函数,析构函数必须要给成公有的吗?
  5. docker mysql镜像连接不上_还在手动安装应用?试一下Docker
  6. php换设备登录逻辑,登录和退出登录的操作逻辑
  7. ubuntu更新python的指令_ubuntu下python模块的库更新(转载)
  8. Tensorflow学习之 卷积神经网络 (一)什么是卷积?
  9. ubuntu下u盘变成只读文件
  10. Jscript 控制程序的流程
  11. 日常摄影练习时,有什么技巧能提高照片品质?
  12. 浮动div中的图片垂直居中
  13. 20150430 调试分析之 根据内核报错信息栈信息分析错误
  14. 淘宝,搜狐,ip-api 免费IP地址查询API接口
  15. xss之CSP bypass
  16. 洛谷P1526 智破连环阵
  17. vant list 分页问题
  18. python关于二手房的课程论文_用Python对二手房信息数据清洗及简单分析
  19. 诱惑视频木马样本态势
  20. Python有道智云API图片文字识别

热门文章

  1. JDK.attach 包解析
  2. 使用aria2批量下载微博相册
  3. Fast R-CNN文章详细解读
  4. 3GPP中的各种缩写
  5. 第一周总结 汉得日记
  6. Win7开自带的虚拟WIFI
  7. 南水北调中线调水量仅占丹江口水库水量1/4
  8. 使用yum命令创建缓存时报错:Peer cert cannot be verified or peer cert invalid
  9. Verified Boot
  10. Trianglify - 生成五彩缤纷的 SVG 背景图案