SPA单页面原理简单例子演示

hash模式

编辑浏览器地址栏看效果,可以添加#a、#b或者#c

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
	<style>
		div {
			display: none;
		}
		.a {
			display: block;
		}
	</style>
</head>
<body>
	<div id="a" class="a">a</div>
	<div id="b" class="b">b</div>
	<div id="c" class="c">c</div>
</body>
<script>
	function hashchange (hashEvt) {
    console.log(hashEvt)
		const newHashVal = hashEvt.newURL.split('#')[1]
		const oldHashVal = hashEvt.oldURL.split('#')[1] || 'a'
		document.getElementById(newHashVal).style.display = 'block'
		document.getElementById(oldHashVal).style.display = 'none'
  }

  window.addEventListener('hashchange', hashchange)
</script>
</html>

H5 history

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>
<a class="api">a.html</a>
<a class="api">b.html</a>
</body>
<script>
	document.querySelectorAll('.api').forEach(item => {
    item.addEventListener('click', (e) => {
			e.preventDefault()
			if (!!(window.history && window.history.pushState)) {
        const link = item.textContent
        history.pushState({name: 'api'}, link, link)
			}
		}, false)
  })

  window.addEventListener('popstate', e => {
    console.log({
      location: location.href,
      state: e.state
    })
  }, false)
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SPA(Single Page Application)即页面应用,是一种通过JavaScript实现的Web应用程序模式,其原理如下: 1. 前端路由:SPA使用前端路由来管理页面的跳转和加载。通过监听浏览器URL的变化,SPA可以根据URL中的路径信息加载相应的页面或组件,实现页面的切换,而不会刷新整个页面。 2. 组件化开发:SPA页面拆分为多个组件,每个组件负责不同的功能。在切换页面时,只需要加载当前页面需要的组件,可以减少网络请求,提高用户体验。 3. 异步数据加载:SPA使用Ajax、WebSocket等技术与后端进行数据通信,通过异步请求获取数据,并在页面上进行渲染。数据的获取和展示是分离的,可以实现数据的动态更新,减少页面的刷新。 4. 虚拟DOM:SPA使用虚拟DOM机制,通过JavaScript对象来表示页面的结构和内容。当数据发生变化时,SPA会通过比较新旧虚拟DOM的差异,然后只更新差异部分,减少页面的重新渲染,提高性能。 5. 前后端分离:SPA前端和后端完全分离,前端负责页面展示和用户交互,后端只负责提供数据接口。前后端可以独立开发和部署,提高开发效率和灵活性。 总结:SPA通过前端路由、组件化开发、异步数据加载、虚拟DOM以及前后端分离等技术,实现了在一个页面中动态加载不同的组件、实时更新数据、提高用户体验和开发效率的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amodoro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值