单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用。它将所有的活动局限于一个 Web 页面中,仅在该 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。一旦页面加载完成了,SPA 不会因为用户 的操作而进行页面的重新加载或跳转。取而代之的是利用 JavaScript 动态的变换 HTML 的内容,从而实现 UI 与用户的交互。由于避免了页面的重新加载, SPA 可以提供较为流畅的用户体验。得益于 ajax,我们可以实现无跳转刷新, 又多亏了浏览器的 histroy 机制,我们用 hash 的变化从而可以实现推动界面变化。从而模拟元素客户端的单页面切换效果:

SPA 被人追捧是有道理的,但是它也有不足之处。任何东西都有两面性.

SPA 的优缺点

(1)优点:

1、 无刷新界面,给用户体验原生的应用感觉

2、 节省原生(android 和 ios)app 开发成本

3、 提高发布效率,无需每次安装更新包

4、 容易借助其他知名平台更有利于营销和推广

5、 符合 web2.0 的趋势

(2) 缺点:

1、效果和性能确实和原生的有较大差距

2、各个浏览器的版本兼容性不一样

3、业务随着代码量增加而增加,不利于首屏优化

4、某些平台对 hash 有偏见,有些甚至不支持 pushstate

5、不利于搜索引擎抓取

SPA的理解与优缺点相关推荐

  1. Vue.js的的理解及优缺点

    一.MVX框架模式了解 MVX框架模式:MVC+MVP+MVVM 1.MVC:Model(模型)+View(视图)+controller(控制器),主要是基于分层的目的,让彼此的职责分开.       ...

  2. 一、node.js的理解?优缺点?应用场景?

    一.是什么 node.js是一个开源与跨平台的JavaScript运行时环境 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动.非阻塞和异步输入输出 ...

  3. JS闭包的简单理解。优缺点以及垃圾回收机制

    闭包是什么? ·了解闭包首先了解js的'链式作用域'结构,对象可以一级一级的向上查找父对象的变量,所以父对象的变量对子对象可见,反之不成立:所以都可以访问全局变量 ·为了解决函数外部无法访问函数内局部 ...

  4. SPA、MPA 的优缺点

    SPA 优点,我认为更多是在软件工程方面,SPA 形式可以做到前后端彻底分离,只要制定好 API 规范,那么前后端就可以独立开发,并且一套 API 可以同时供多个「端」使用.同时,SPA 倾向于将更多 ...

  5. 浅谈对Python的理解和优缺点

    俗话说:人生苦短,我用Python 最近在自学Python,也算是新手入门,如果你有一定的代码基础,那么上手Python会非常容易. 这里给大家推荐廖雪峰的最新版Python教程,不论是从配置安装还是 ...

  6. 25.对函数式编程的理解?优缺点?

    一.是什么 函数式编程是一种"编程范式"(programming paradigm),一种编写程序的方法论 主要的编程范式有三种:命令式编程,声明式编程和函数式编程 相比命令式编程 ...

  7. 0x00说说对SPA的理解?

    概览 0x00 定义: SPA:(single-page-application) : 一种网络应用程序或网站的模型. 通过动态重写当前页面来与用户交互; 避免了页面之间切换打断用户体验: 所有必要的 ...

  8. MVC的理解和优缺点的总结

    概念:  MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务数据.逻辑.界面显示分离的方 ...

  9. < 今日份知识点: 浅述对函数式编程的理解 及其 优缺点 >

    文章目录 前言

最新文章

  1. ORB-SLAM2从理论到代码实现(五):ORBmatcher.cc程序详解
  2. Ubuntu 升级/降级 Kernel 到指定版本
  3. matlab axes标题,Matlab 坐标轴(axes),数据提示(data cursor),标题(title)等的默认字体问题...
  4. linus启动mysql失败_Linux下MySQL启动失败的解决一例
  5. 你不知道Linux的10个最危险的命令
  6. 在PhotoShop中改像素m*n
  7. mysql 8.0远程连接_安装mysql 8.0.17并配置远程访问的方法
  8. InstallShield 2011正式发布
  9. 装水体积c语言,C语言基础之--sizeof()运算符的使用以及注意
  10. 统计csv词频_Python|国家统计局CPI数据动态图表可视化
  11. Eclipse内存溢出
  12. 多线程例题练手(c入门)
  13. 计算机职称考试试题 操作题,2018职称计算机考试Excel备考试题及答案9-excel操作练习题...
  14. sheng的学习笔记-mysql框架原理
  15. html 转 pug 在线,pug - HTML模板引擎安装器
  16. Kruise Rollout v0.2.0 版本发布:支持 Gateway API、StatefulSet 分批发布等能力
  17. 100句你读到哪句最心疼?
  18. 开篇“给自己定一个目标,明年7月去实现。希望不是一时的兴起。”
  19. 【下载Tomcat旧版本】
  20. ArcGIS教程02:由高程点生成表面栅格及对应的等高线

热门文章

  1. “树与二叉树”学习提纲
  2. 如何将音频文件转换为MP3格式?
  3. node.js毕业设计基于微信小程序的健康管理系统(源码+程序+LW+部署)
  4. 糖尿病视网膜病变预测模型-机器学习-人工智能
  5. 完整HTML实例网页代码(4)
  6. (四)本地镜像发布到阿里云将阿里云上的镜像下载到本地
  7. python sched_Python用sched执行周期性任务
  8. 数据结构:图的算法和应用
  9. 2015级信管班Linux课程主页
  10. java解析tfrecord_TensorFlow高效读取数据的方法——TFRecord的学习