Web开发选择使用SPA还是MPA or Hybrid App?

SPA :Single-Page Application,单一页面应用

MPA:Multiple-Page Application,多页面应用

Hybrid App:半原生半Web的混合类App应用

基于内容优先原则(content first)来思考这个问题,内容是用户决定是否使用应用的原因,因此需要回答两个问题

  1. 你想展示怎样的内容给用户

  2. 用户最希望看到怎样的内容

Single-Page Application

单一页面程序在浏览器中运行,在使用期间不需要用户刷新和重新加载资源。GmailGoogle MapsFacebookGithub等都是这种架构的应用。使用SPA架构的应用程序致力于优秀的用户体验,因为这种架构不需要刷新,不需要等待,用户似乎在使用本地程序一般自然,它仅仅是一个网页,通过Javascript加载了所有的内容

优点

  • 快速,在应用程序生命周期内,所有的资源只需要加载一次,后续仅存在一些与服务器的api请求。

  • 开发更容易,不需要服务端路由来处理,所以很容易开始,甚至可以通过本地打开html的方式使用我们的应用程序。

  • 更容易使用Chrome进行调试

  • 更容易制作手机应用程序,因为可以重用大量的代码

  • 更高效的使用缓存,一次加载全部的资源,甚至可以离线使用

缺点

  • 很难做SEO优化,这曾经是个难点,但是目前可以使用服务端渲染来处理这个问题。

  • 首次加载缓慢,因为首次加载时需要加载全部的资源。

  • 相比较传统网页应用,更容易被跨站脚本攻击

  • Javascript的内存弱点有可能使高配电脑也变得卡顿

Multiple-Page Application

多页面程序是我们所知道多更传统的方式,每次请求都会返回一部分页面用于展示,一般有更多的层次,也更为复杂。因为Ajax技术的存在,我们可以局部刷新,一定程度上降低了网络负载,但是相对SPA结构的应用,在开发上会更复杂一些。

优点

  • 对用户来讲,更明确的功能指引,以及更少深度的层次结构

  • 非常利于SEO

缺点

  • 前后端开发关联紧密。

  • 开发更复杂,开发者需要同时在前后端展开工作,将导致更长的开发周期。

使用SPA还是MPA

如果你有风格迥异的内容以及复杂的分类,那建议使用MPA。

如果的内容拥有一致的体验,那建议使用SPA。

另外一种方式拥有两者的优点和更少的缺点,考虑`Hybird app

Hybrid App

Hybrid APP指的是半原生半Web的混合类App。兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。

混合式 APP 目前有越来越火的趋势,一大原因是可以进行“热更新”,不再受限于审核、上线等等繁复的流程。

AppStore里的电商类、新闻类APP,视频类APP普遍采取的是Native的框架,Web的内容。如淘宝、腾讯新闻等等。

Hybrid App 极力去打造类似于Native App 的体验,但仍受限于技术,网速,等等很多因素。 Hybrid App按网页语言与程序语言的混合,又分为四种类型:多View混合型、单View混合型、Web主体型和多主体共存型(灵活型)。

多View混合型 指Native View和Web View独立展示,交替出现。 这种应用混合逻辑相对简单。即在需要的时候,将WebView当成一个独立的View(Activity)运行起来,在WebView内完成相关的展示操作。这种移动应用主体通常是Native App,Web技术只是起到补充作用。开发难度和Native App基本相当。

单View混合型即在同一个View内,同时包括Native View和Web View,互相之间是覆盖(层叠)的关系。 这种Hybrid App的开发成本较高,开发难度较大,但是体验较好。

如百度搜索为代表的单View混合型移动应用,既可以实现充分的灵活性,又能实现较好的用户体验。

Web主体型即移动应用的主体是Web View,主要以网页语言编写,穿插Native功能的Hybrid App开发类型。 这种类型开发的移动应用体验相对而言存在缺陷,但整体开发难度大幅降低,并且基本可以实现跨平台。

Web主体型的移动应用用户体验的好坏,主要取决于底层中间件的交互与跨平台的能力。Hybrid App中的Web主体型只要能够解决用户体验差的问题,就可以变成最佳Hybrid App解决方案类型。

多主体共存型(灵活型)是一种新型的开发模式,即支持Web主体型的应用,又支持以Native主体的应用,也支持两者混合的开发模式。 比如kerkee框架,它具有跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、具有Debug环境、彻底解决跨域问题等特点。用户体验与Native App媲美。功能方面,开发者可随意扩展接口。

posted @ 2020-12-15 14:56  IT小码农!!!!  阅读(260)  评论(0)    收藏  举报