灵感来源:铁狮子-前端组件化
SPA设计
- 前后端分离
- 减轻服务器压力
- 增加用户体验
Prerender预渲染优化SEO
工作原理
可以执行打开操作,可以操作历史记录,通过前进,后退可回到任何一个步骤的网页
History API
pushState创建一个历史记录onpopstate用于响应浏览器的前进后退,History改变时触发
Hash
location.hashurl的hash属性hashchange监听,页面地址的变化
代码演示
History
// <a class="api a"> a.html</a>
// <a class="api b"> b.html</a>
// 注册路由,监听点击事件
document.querySelectorAll('.api').forEach(item => {
item.addEventListener('click', (e) => {
e.preventDefault(); //阻止默认事件
let link = item.textContent;
// 创建历史记录,(自定义参数,title,地址)
window.history.pushState({ name: 'api' }, link, link)
}, false)
})
// 监听路由
window.addEventListener('popstate', (e) => {
console.log({
location: location.href,
state: e.state
})
})
Hash
// Hash
// <a class="hash a">hash a</a>
// <a class="hash b">hash b</a>
// 注册路由,监听点击事件
document.querySelectorAll('.hash').forEach(item => {
item.addEventListener('click', (e) => {
e.preventDefault(); //阻止默认事件
let link = item.textContent;
location.hash = link;
}, false)
})
// 监听路由
window.addEventListener('hashchange', (e) => {
console.log({
location: location.href,
hash: location.hash
})
})
闲话
本来对博客持有一种如果别人写过那么再写就没有意义的想法,想看的时候看别人的写好的文章不就好了吗?
最近明白了,写博客也是一种学习,哪怕与人雷同哪怕千篇一律,只要自己动手,有所收获就不亏。
如果还能帮到其他小伙伴,那就更好!