SPA和MPA

news2024/12/25 9:15:15

Single Page Applications (SPA). Learn what an SPA is, how it works, and… |  by Natasha Ferguson | Medium
SPA与MPA是什么

**SPA(Single Page Application,单页应用)**在首次加载时会下载一个单独的HTML文件,然后通过JavaScript动态加载内容,无需每次页面刷新时重新加载整个页面。**MPA(Multi-Page Application,多页应用)**是一种传统的Web应用程序架构,每个不同的页面都对应一个独立的HTML文件。用户在导航到不同页面时需要重新加载整个页面,每个页面都有自己的HTML、CSS和JavaScript。


SPA与MPA的区别

  1. 页面加载方式:SPA初次加载一个主页面,在此基础上动态更换页面内容来实现不同页面的切换,无需重新加载整个页面;MPA每次切换页面都是重新加载整个页面。
  2. 用户体验:SPA通常不会出现闪烁和白屏,用户体验较好;MPA切换新页面时可能会出现较大的延迟。
  3. SEO: SPA在SEO方面具有一些挑战,因为搜索引擎爬虫在初始加载时可能无法获取到完整的页面内容。但可以采取预渲染、服务端渲染等策略来改善SPA的SEO。MPA通常更有利于SEO,因为每个页面都有自己的HTML内容和URL,搜索引擎可以更容易地索引这些页面。
  4. 开发和维护: SPA通常需要更多的前端工程师技能,因为它们涉及到客户端路由、状态管理。MPA的开发通常更传统,更易于理解,不需要太多的前端框架。每个页面可以视为独立的实体,更容易进行维护。

SPA如何进行搜索引擎优化

  1. 服务器端渲染SSR或预渲染:SSR将在服务器上生成完整页面的HTML。预渲染则是在构建时生成页面的静态HTML版本,可以更快地加载和索引。通用应用框架Nuxt.js自带了SSR功能。

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  

load 事件在整个页面及所有依赖资源如样式表和图片都已完成加载时触发。

hashchange事件是当 URL 的片段标识符 (跟在#符号后面的 URL 部分,包括#符号)更改时触发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/975000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【校招VIP】java语言考点之关键字string

考点介绍: string作为一个特殊类,正常情况下,是遵循对象的值和引用的使用。有一定的考察频度,但有的时候也能代表相等,与常量区的插入有关。 java语言考点之关键字string-相关题目及解析内容可点击文章末尾链接查看&a…

redis缓存失效时间没到,数据莫名丢失问题排查

述:redis缓存了token,失效时间为24小时,可是每次不到多久,就提示token失效,重新登录后,没用多久,又提示token失效。查看了下缓存,发现数据全部没掉了,并且多了几个back1&…

电脑提示“系统找不到指定的文件”怎么办?

“系统找不到指定的文件”对于Windows用户来说是一个很常见的错误,尤其是Win10用户,经常会遇到Win10提示找不到指定文件。在此错误后面有时还会出现错误代码:0x80070002,但是,故障类型或代码在不同的操作系统规范上是不…

史上最全PMP学习资料、项目管理资料、备考经验包,3A一次通过

你是否也有过类似的经历? 为了获取备考资料,有的同学在论坛、知乎或者相关垂直类网站下载了很多的资料,这些资料大部分是机构进行获客引流的资料,没有真正的干货。 经常会看到10G、20G的资料包,感觉内容很丰富&#xf…

Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式

Spring Spring:春天------>给软件行业带来了春天! 2002,首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson,Spring Framework创始人&…

关于某次授权的大型内网渗透测试

背景: 接到朋友邀请,要进行一个授权站点的渗透,但是进去实际环境才发现是多域控主机。也学习了很多后渗透手法,比较受益匪浅。 前期渗透: 打点:(任意文件上传) 直接发现头像处任…

目录与文件系统

无论在哪个计算机系统中,文件系统结构都应该是一样的一层或者几层的话太多太乱不适用用目录实现一个树状结构,划分后层次清晰如果把目录下所有的文件的FCB都存取,然后对比没必要太麻烦了 所以数据盘块集合中存放目录下文件字符串和对应的编号…

Rocky(Centos)安装中文字体(防止中文乱码)

1、查看字体列表 运行下列命令 fc-list 若出现,下面截图,则需要安装字体管理软件 安装字体库,运行: yum -y install fontconfig 当看到下图的提示信息时说明已安装成功: 二、添加中文字体 1)window…

文件夹怎么安全加密?文件夹加密软件怎么样?

我们在使用电脑的过程中,习惯用文件夹来管理电脑数据,为了文件夹数据安全,我们需要使用加密的方式来进行保护。那么,文件夹该怎么安全加密呢?下面我们就来了解一下。 文件夹加密软件安全吗? 文件夹加密软…

功率放大器主要作用是什么呢

功率放大器是一种电子设备,主要作用是将输入信号的功率增加到更高的水平,以便能够驱动高功率负载。在许多应用中,信号源产生的信号往往具有较低的功率,无法直接满足一些要求较高的设备或系统的需求。而功率放大器则可以增强信号的…

当面试被问到 Java 内存模型,不妨反问面试官:您问得是 Java Memory Model 呢?还是 JVM 运行时数据区?

目录 1. JVM 运行时数据区 2. Java 内存模型 最近在牛客上看到这样一个帖子,大概就是在面试中呢,被面试官问到了 Java 内存模型,面试的这位小伙呢,也是掌握了 JVM 内存布局的相关知识,但是不知道面试官问的 Java 内存…

行测图形推理规律(一)元素组成

题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…

淘宝数据库,主键如何设计的?

聊一个实际问题:淘宝的数据库,主键是如何设计的? 某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的 MySQL 军规。其中,一个最明显的错误就是关于MySQL 的主键设计。 大部分人的回答如此自信&#xff…

uni-app点击复制指定内容(点击复制)

官方api uni.setClipboardData(OBJECT) uni.setClipboardData({data: 要被复制的内容,success: function () {console.log(success);} });

虹科分享 | MKA:基于先进车载网络安全解决方案的密钥协议

MKA作为MACsec的密钥协议,具有安全、高效、针对性强的特点,为您的汽车ECU通讯创建了一个安全的通信平台,可以助力您的各种汽车创新项目! 虹科方案 | 什么是基于MACsec的汽车MKA 一、MACsec在汽车行业的应用 在以往的文章中&#…

AutoSAR-BSW层概述

一.什么是BSW BSW层全称为Basic Software (基础软件层),顾名思义,该层主要是为应用层提供基础服务。 这里可以看到 BSW 主要提供了:看门狗服务 ,存储服务,通信和诊断服务,OS服务&a…

select 语句执行顺序

sql 样例 select t_students.name as 姓名, sum(case when b.cname语文 then c.sc_val else 0 end) As 语文 ,sum(case when b.cname数学 then c.sc_val else 0 end) As 数学,sum(case when b.cname英语 then c.sc_val else 0 end) As 英语, From t_students a, t_corses b, t…

MIT6.S081实验环境搭建

MIT6.S081 lab 环境搭建 本文参考了MIT的官方指南和知乎文章环境搭建 step1 首先需要一个ubuntu20.04的系统,我使用的是vscode的WSL2连接的ubuntu20.04,使用virtual box建一个ubuntu20.04的虚拟机应该也可以。 可以用 lsb_release -a 查看一下自己ub…

微信小程序开发:一种新型的移动应用程序开发方式

一、引言 随着移动互联网的快速发展,微信小程序作为一种新型的移动应用开发方式,正在受到越来越多的关注。微信小程序是一种基于微信平台的轻量化应用,开发者可以通过微信提供的开发工具和接口,开发出各种具有特定功能的应用程序…

深度解析浏览器工作原理与v8引擎

1.浏览器中js如和被执行的 当我们输入一个域名时会经历dns解析变成一个ip地址,然后浏览器会通过这个ip地址去访问服务器,服务器会放回一个index.html页面,浏览器开始解析这个inde.html文件,当解析到link标签时就开始下载对应的css…