你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?

这篇具有很好参考价值的文章主要介绍了你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是SPA

SPA(single-page application),翻译过来就是单页应用SPA是一种网络应用程序或网站的模型,它通过动态重写当前页面来与用户交互,这种方法避免了页面之间切换打断用户体验在单页应用中,所有必要的代码(HTML、JavaScript和CSS)都通过单个页面的加载而检索,或者根据需要(通常是为响应用户操作)动态装载适当的资源并添加到页面页面在任何时间点都不会重新加载,也不会将控制转移到其他页面举个例子来讲就是一个杯子,早上装的牛奶,中午装的是开水,晚上装的是茶,我们发现,变的始终是杯子里的内容,而杯子始终是那个杯子结构如下图

我们熟知的JS框架如react,vue,angular,ember都属于SPA

二、SPA和MPA的区别

上面大家已经对单页面有所了解了,下面来讲讲多页应用MPA(MultiPage-page application),翻译过来就是多页应用在MPA中,每个页面都是一个主页面,都是独立的当我们在访问另一个页面的时候,都需要重新加载html、css、js文件,公共文件则根据需求按需加载如下图

单页应用与多页应用的区别
你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?,前端,前端框架
单页应用优缺点
优点:

  • 具有桌面应用的即时性、网站的可移植性和可访问性

  • 用户体验好、快,内容的改变不需要重新加载整个页面

  • 良好的前后端分离,分工更明确
    缺点:

  • 不利于搜索引擎的抓取

  • 首次渲染速度相对较慢

三、实现一个SPA
原理
监听地址栏中hash变化驱动界面变化
用pushsate记录浏览器的历史,驱动界面发送变化

实现
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模式
history 模式核心借用 HTML5 history api,api 提供了丰富的 router 相关属性先了解一个几个相关的api

  • history.pushState 浏览器历史纪录添加记录
  • history.replaceState修改浏览器历史纪录中当前纪录
  • history.popState 当 history 发生变化时触发
// 定义 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  

四、题外话:如何给SPA做SEO

下面给出基于Vue的SPA如何实现SEO的三种方式

SSR服务端渲染
将组件或页面通过服务器生成html,再返回给浏览器,如nuxt.js

四、题外话:如何给SPA做SEO
下面给出基于Vue的SPA如何实现SEO的三种方式

SSR服务端渲染
将组件或页面通过服务器生成html,再返回给浏览器,如nuxt.js

静态化
目前主流的静态化主要有两种:(1)一种是通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中(2)另外一种是通过WEB服务器的 URL Rewrite的方式,它的原理是通过web服务器内部模块按一定规则将外部的URL请求转化为内部的文件地址,一句话来说就是把外部请求的静态地址转化为实际的动态页面地址,而静态页面实际是不存在的。这两种方法都达到了实现URL静态化的效果

使用Phantomjs针对爬虫处理
原理是通过Nginx配置,判断访问来源是否为爬虫,如果是则搜索引擎的爬虫请求会转发到一个node server,再通过PhantomJS来解析完整的HTML,返回给爬虫
目前主流的静态化主要有两种:(1)一种是通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中(2)另外一种是通过WEB服务器的 URL Rewrite的方式,它的原理是通过web服务器内部模块按一定规则将外部的URL请求转化为内部的文件地址,一句话来说就是把外部请求的静态地址转化为实际的动态页面地址,而静态页面实际是不存在的。这两种方法都达到了实现URL静态化的效果

使用Phantomjs针对爬虫处理
原理是通过Nginx配置,判断访问来源是否为爬虫,如果是则搜索引擎的爬虫请求会转发到一个node server,再通过PhantomJS来解析完整的HTML,返回给爬虫文章来源地址https://www.toymoban.com/news/detail-684652.html

到了这里,关于你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AES和DES算法的区别,分别有哪些优缺点

    AES(高级加密标准)和DES(美国数据加密标准)是对称加密算法。AES是美国联邦政府采用的一种区块加密标准。DES是对称性加密里常见的一种,是一种使用密钥加密的块算法。那么AES和DES算法的区别在哪里,这两者有哪些优缺点呢?   什么是AES? AES一般指高级加密标准,又

    2023年04月08日
    浏览(58)
  • vue -- 单页面应用和多页面应用区别及优缺点

    Vue单页面应用(SPA) 和 多页面应用(MPA) 是两种常见的前端应用架构模式,它们在开发方式、性能以及用户体验方面有着不同的特点。 单页面应用(SPA ): SPA 是一种基于JavaScript的应用程序,通过动态更新页面的方式来实现交互和导航。 整个应用只有一个HTML页面,所有的

    2024年01月19日
    浏览(49)
  • 【基础类】—三栏页面布局的方案和优缺点

    float浮动、absolute绝对定位、flex弹性盒子、table表格布局、grid网格布局 浮动 float 实现总结: 1-1 通过左右浮动,实现左右两栏的占位 1-2 通过内容margin, 实现中间内容宽度自适应 1-3 right的元素必须放在center元素的前面,因为需要有.right元素通过右浮动 绝对定位 absolute 实现总结

    2024年02月14日
    浏览(49)
  • 深入理解CommonJS和ES Module? 优缺点?什么时候用?

    在webpack中,我们可以使用多种模块化方式,如CommonJS和ES Module。 CommonJS是什么? CommonJS是一种模块化规范,它是Node.js采用的模块化规范,它的主要特点是同步加载模块,模块输出的是一个值的拷贝,而不是引用。CommonJS的优点是简单易用,可以在服务器端和客户端使用,缺点

    2024年02月03日
    浏览(41)
  • SwiftUI的优缺点

    2019年WWDC大会上,苹果在压轴环节向大众宣布了基于Swift语言构建的全新UI框架——SwiftUI,开发者可通过它快速为所有的Apple平台创建美观、动态的应用程序。推荐大量使用struct代替类。 SwiftUI 就是⼀种声明式的构建界面的用户接口工具包。 SwiftUI使用声明式的语法构建UI,我们

    2024年02月13日
    浏览(55)
  • 量化交易的优缺点

       量化交易其实就像 《物种起源》 里的物种一样,随着计算机与 智能 机器人的发展 , 投资量化是时代 发展 的必然产物 。 所谓 能者为先 适 者生存,这是 放诸四海 皆为本 的 生存法则 。在 现代 科技欣欣向荣的发展 环境下 , 量化交易 所 表现出 的 种种 优势 , 使 全

    2023年04月08日
    浏览(103)
  • springcloud 的优缺点:

    优点: 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率 可以更精准的制定优化服务方案,提高系统的可维护性 微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量 适于互联网时代,产品迭代周期更短 缺点: 微服务过多,治理成本高

    2023年04月08日
    浏览(64)
  • CentOS 系统的优缺点

    CentOS (社区企业操作系统的缩写)是一个基于红帽企业 Linux (RHEL)的免费开源发行版, 旨在为服务器和工作站提供稳定、可靠和安全的平台。 不应将其与CentOS Stream 混淆,后者是即将发布的 RHEL 版本的上游开发平台。 CentOS Linux 源自 RedHat 发布的源代码,它是红帽停止支持其付

    2024年04月27日
    浏览(56)
  • ajax有哪些优缺点?

    Ajax是 异步的JavaScript和XML ,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax的优点有: 能够在不刷新页面的情况下进行数据的更新,提高了用户体验。 优化了浏览器和服务器之间的通信,减少了不必要的网络传输。 基于标准且被广泛支持,不需要

    2024年02月08日
    浏览(58)
  • SSM框架的优缺点

    SSM的优缺点 Mybatis 的优缺点 优点 1、与JDBC相比,减少了50%以上的代码量 2、最简单的持久化框架、小巧简单易学 3、SQL代码从程序代码中彻底分离出来,可重用 4、提供XML标签,支持编写动态SQL 5、提供映射标签,支持对象与数据库的ORM字段关系映射 缺点 1、SQL语句编写工作量

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包